gpt4 book ai didi

javascript - 我如何在 dart 中实现这个 jquery 模式?

转载 作者:行者123 更新时间:2023-12-03 12:40:21 25 4
gpt4 key购买 nike

我正在尝试将以下 javascript/jquery 代码转换为 dart,但我在理解 future 的工作原理时遇到了问题。

function fnA() {
fnB().then(function() {
// do something
}
}

function fnB() {
var ret = $.Deferred();

_db.open(database_name).then(function() {
var defers = [];

_db.keys().forEach(function(key_name) {
var key_dfd = $.Deferred();
defers.push(key_dfd);
_db.getByKey(key_name).then(function(data) {
key_dfd.resolve(data);
});
});
$.when(defers).then(ret.resolve);
})
.fail(function() {
ret.reject();
});

return ret.promise();
}

我以为我可以做类似于以下的事情,但它似乎不起作用:

(我使用 lawndart 作为数据库)

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

Future fnB() {
return _db.open().then((_) {
return _db.keys().forEach((String key_name) {
return _db.getByKey(key_name).then((String data) {
// do something with data
return data;
});
});
});
}

最佳答案

我做了一些改进,但尚未测试代码:

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));
});
}

关于javascript - 我如何在 dart 中实现这个 jquery 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23554093/

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