Javascript 进入';然后';'的功能$q、 全部';在'之前;然后';单一承诺
我有以下代码:Javascript 进入';然后';'的功能$q、 全部';在'之前;然后';单一承诺,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我有以下代码: function first() { let promises = two(arg); $q.all(promises).then(() => { console.log("all promises"); }); } function two(arg) { let promises = []; arg.forEach((ar) => { let promise = funcThatReturnP
function first() {
let promises = two(arg);
$q.all(promises).then(() => {
console.log("all promises");
});
}
function two(arg) {
let promises = [];
arg.forEach((ar) => {
let promise = funcThatReturnPromise(ar).then(() => {
console.log("single promise");
});
promises.push(promise);
});
return promises;
}
我希望所有的“单一承诺”
将在“所有承诺”
之前打印,但实际上“所有承诺”
将在一些“单一承诺”
之前打印
我如何强制所有的“单一承诺”
在“所有承诺”
之前打印
我试图找到解决办法,但找不到原因
提前谢谢,对不起我的英语 我刚刚测试了您的代码,似乎无法复制您的问题。每个
“单一承诺”
都将在最终的“所有承诺”
之前打印出来,这应该是预期的行为。
如果其中一个承诺被拒绝,$q.all的分支将不会运行。
我的测试代码是:
const fakePromise = () => {
var deferred = this.$q.defer();
this.$timeout(() => {
deferred.resolve();
}, Math.random() * 100);
return deferred.promise;
}
const two = (arg) => {
let promises = [];
arg.forEach((ar) => {
let promise = fakePromise().then(() => {
console.log("single promise");
});
promises.push(promise);
});
return promises;
}
const first = () => {
let promises = two(Array(2000).fill('x'));
this.$q.all(promises).then(() => {
console.log("all promises");
});
};
first();
也许如果你有其他的例子,我可以帮你更多