功能:
users.forEach(function(user) {
window.server.users.add(user);
});
我想要的是等到价值成功"成功"插入,然后才添加下一个。这一直重复到foreach结束。 "添加"函数默认返回一个promise,但我不知道如何更改代码来执行此操作。
users.forEach(function(user) {
window.server.users.add(user).then(function(){
//insert finished
});
});
答案 0 :(得分:5)
请勿使用forEach
。保留自己的索引变量,并定义一个使用它的函数,然后将其自身排列在promise的回调中。
var i = 0;
addUser = function () {
if (i >= users.length) return;
window.server.users.add(users[i++]).then(addUser);
}
addUser();
答案 1 :(得分:3)
假设承诺实施遵循标准的Promise / A +提议,您可以通过从then
回调中返回新的承诺来链接承诺:
var promise = window.server.users.add(users[0]);
users.slice(1).forEach(function(user) {
promise = promise.then(function() {
return window.server.users.add(user);
});
});