考虑以下伪代码:
// main
function1();
function2();
...
//the rest of the code
....
// function1:
someservice.getPhone().then(calback1);
// function2:
someservice.getAddress().then(calback2);
我可以做些什么来确保在function1和function2都通过回调之前不执行其余的代码?
由于
答案 0 :(得分:1)
promise的.then
方法总是返回派生的promise。使用这些派生的promise来延迟后续函数的执行。
// function1:
var derivedPromise1 = service.getPhone().then(calback1);
// function2:
var derivedPromise2 = someservice.getAddress().then(calback2);
$q.all([derivedPromise1, derivedPromise2])
.then(function onFulfilled(resultArray) {
//code placed here
}).catch(function onRejected(errorResult) {
//error handling code here
});
$q
服务将在调用callback1
函数中的代码之前等待callback2
和onFulfilled
成功完成。否则,$q
服务将为第一个被拒绝的承诺调用onRejected
函数。