gpt4 book ai didi

dart - 等待其他 future 提出的 future

转载 作者:行者123 更新时间:2023-12-02 20:52:29 24 4
gpt4 key购买 nike

我正在使用 Lawndart 库访问浏览器数据,并希望收集一组查询的结果。这是我认为应该有效的:

  numberOfRecordsPerSection(callback) {
var map = new Map();

db_sections.keys().forEach((_key) {
db_sections.getByKey(_key).then((Map _section) {
int count = _section.length;
map[_key] = count;
});
}).then(callback(map));
}

但是,当调用回调时,map 仍然是空的(它会被正确填充,但稍后,在所有 Future 完成之后)。我认为问题在于 getByKey() 调用创建的 Futures 没有被 forEach() 调用创建的 Futures“捕获”。

如何更正我的代码以正确捕获结果?

最佳答案

代码来自How do I do this jquery pattern in dart?看起来和你的很相似

对于 _db.keys() 的每个条目将 future 添加到数组中,然后等待 Future.wait() 所有这些都完成

不确定此代码是否有效(请参阅链接问题答案的评论)

void fnA() {
fnB().then((_) {
// Here, all keys should have been loaded
});
}

Future fnB() {
return _db.open().then((_) {
List<Future> futures = [];
return _db.keys().forEach((String key_name) {
futures.add(_db.getByKey(key_name).then((String data) {
// do something with data
return data;
}));
}).then((_) => Future.wait(futures));
});
}

关于dart - 等待其他 future 提出的 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23969680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com