我想在两个api都完成时得到结果



我有两个api,我想当这两个api都完成时,再做一项工作,另一个问题是,如果我想充当一个链,应该先运行一个,然后再运行后者,在控制台中写是不确定的

var promiseA = service.getAppReciverServiceList(function (data) {
self.chargeMoney = data;

});
var promiseB = service.getAppReciverServiceList(function (data) {
self.chargeMoney = data;
return data;
});
setTimeout(function () { console.log(promiseB); }, 2000);
q.all([
promiseA, promiseB
]).then(function (data) {
console.log(data)
//Array of result [resultOfgetServiceDetails1, resultOfgetServiceDetails2]
scope.variable = data;
});

我找到了我的答案,

如果我们想要使用链,意味着一个api响应,然后另一个api工作:

var promise = $q(function (resolve, reject) {
service.getAppReciverServiceList(function (data) {
console.log("1")
resolve(data);
})
});
promise.then(function (data) {
console.log(data, "2")

});

如果我们想要所有的api响应,然后做其他工作:

var deffered1 = $q.defer();
service.getAppReciverServiceList(function (data) {
deffered1.resolve(data);
})
var deffered2 = $q.defer();
service.getAppReciverServiceList(function (data) {
deffered2.resolve(data);
});
$q.all([deffered1.promise, deffered2.promise]).then
(
function (data) {
console.log(data);
},
function () {
console.log('an error occured');
// error
}
);

最新更新