Angular - 将函数转换为promise

时间:2016-05-12 14:15:16

标签: angularjs angular-promise

考虑以下伪代码:

// main
function1();
function2();

...
//the rest of the code
....

// function1:
someservice.getPhone().then(calback1);
// function2:
someservice.getAddress().then(calback2);

我可以做些什么来确保在function1和function2都通过回调之前不执行其余的代码?

由于

1 个答案:

答案 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函数中的代码之前等待callback2onFulfilled成功完成。否则,$q服务将为第一个被拒绝的承诺调用onRejected函数。