是否可以像在 JS 中那样在 dart(Flutter) 中实现 Future<>s 模式?
Is that Future<>s pattern possible to do in dart(Flutter) as it is in JS?
我需要使用 dart 的 Futures(或其他)做这样的事情:
function Obj(){
let resolver;
this.promise = new Promise((resolve, reject) => {
resolver = resolve;
});
//await firebase initialization or something
setTimeout(() => {
resolver('foo');
}, 2000);
return this;
}
var object = Obj();
(async () => {
var result = await object.promise;
console.log(result);
})();
这里发生了什么,我有一个对象存储在一个单例中的某个地方(在 JS 示例中它是一个 object<Obj>
)在开始的某个地方初始化,在下一行,有另一个对象初始化(在JS类比其async()
函数)。这个异步函数正在等待 object<Obj>
初始化它的数据,如“foo”或其他。
在 JS 中,此设置是可行的,因为 Promises 为您提供了对 resolve
ing 函数的引用,您可以在任何地方使用它。但是看 Dart 的 Future
s 我找不到类似的东西,这很奇怪。
TL;DR:
我的目标是让第一个对象在其构造函数中异步初始化一些数据,然后以某种方式通知对该对象的所有其他引用数据已初始化。
到目前为止,在 dart 中使用 Futures 是不可能做到这一点的。
但是:我太复杂了,为此使用全局状态控制器。每当收到数据时,状态都会更新,更新后的状态很容易在引用该状态的其他对象中跟踪(通常使用流)。
我需要使用 dart 的 Futures(或其他)做这样的事情:
function Obj(){
let resolver;
this.promise = new Promise((resolve, reject) => {
resolver = resolve;
});
//await firebase initialization or something
setTimeout(() => {
resolver('foo');
}, 2000);
return this;
}
var object = Obj();
(async () => {
var result = await object.promise;
console.log(result);
})();
这里发生了什么,我有一个对象存储在一个单例中的某个地方(在 JS 示例中它是一个 object<Obj>
)在开始的某个地方初始化,在下一行,有另一个对象初始化(在JS类比其async()
函数)。这个异步函数正在等待 object<Obj>
初始化它的数据,如“foo”或其他。
在 JS 中,此设置是可行的,因为 Promises 为您提供了对 resolve
ing 函数的引用,您可以在任何地方使用它。但是看 Dart 的 Future
s 我找不到类似的东西,这很奇怪。
TL;DR:
我的目标是让第一个对象在其构造函数中异步初始化一些数据,然后以某种方式通知对该对象的所有其他引用数据已初始化。
到目前为止,在 dart 中使用 Futures 是不可能做到这一点的。
但是:我太复杂了,为此使用全局状态控制器。每当收到数据时,状态都会更新,更新后的状态很容易在引用该状态的其他对象中跟踪(通常使用流)。