Javascript angularjs检查是否有2个承诺返回
我有一种情况,当每个人的承诺都回来时,我想做一些事情,当他们都回来时,我想做一些其他的事情Javascript angularjs检查是否有2个承诺返回,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我有一种情况,当每个人的承诺都回来时,我想做一些事情,当他们都回来时,我想做一些其他的事情 promise1.then(function() { // do stuff }) promise2.then(function() { // do stuff }) $q.all([promise1, promise2]).then(function () { var dependsOnBoth = promise1.x && promise2.x; }) 我想知道重复承诺
promise1.then(function() { // do stuff })
promise2.then(function() { // do stuff })
$q.all([promise1, promise2]).then(function () {
var dependsOnBoth = promise1.x && promise2.x;
})
我想知道重复承诺是否会重复电话,是否有更好的方法来确保两者都完成了。谢谢 然后函数按照它们添加到承诺中的顺序进行解析,因此将在调用all.Then之前调用单个thens。然后每个函数只调用一次,因此这可能是处理该问题的最佳方法 当然,你可以把所有的后期处理放在all路线上,因为这两个步骤都会发生 另外:不要忘记您的错误回调。因为您正在调用每个承诺,然后再次调用$q。所有这些都是关于两个承诺的。每个承诺都会被要求两次 备选方案一: 你会知道,当每个承诺都解决了。所以,不要每次承诺都打电话。只需要$q.all就可以了
var promise1 = function(){
var promise1defered = $q.defer();
// promise1 is resolved here.
promise1defered .resolve();
return promise1defered .promise;
}
var promise2 = function(){
var promise2defered = $q.defer();
// promise2 is resolved here.
promise2defered .resolve();
return promise2defered .promise;
}
$q.all([promise1, promise2]).then(function () {
// Both promises are resolved here
})
备选方案二:
不要使用$q.all,而是使用链接承诺
var promise2 = promise1.then(function(){
// promise1 completed
// Resolve promise2 here
]);
promise2.then(function(){
// promise 2 completed
// Both promise 1 and promise 2 are completed.
});
不,使用all完全可以,只是我不知道你说的promise1.x和promise2.x是什么意思。始终使用回调参数!是的,那是个错误。在我的例子中,promise1是一个返回承诺的服务,promise2是一个api调用。当两个人都回来的时候,我想做点什么,当两个人都回来的时候,我不知道最好的方法,当然,你不能做任何事;apiCall.theny,但需要使用var promise=apiCall;承诺,然后;答应我,特尼。创建一次,多次使用。如果承诺对象实际上只是承诺,而不是返回承诺的方法,那么调用它们没有什么错。然后多次使用它们。foo=Promise.resolve'yay';foo.thenbar1;foo.thenbar2;只需要按顺序调用bar1和bar2一次。请修复您的第一个示例,promise1和promise2是函数,而不是承诺。