本文共 990 字,大约阅读时间需要 3 分钟。
$q用于执行异步操作
一、基本用法
AngularJS
二、$q多个promise串行
function f1() { var defer = $q.defer(); setTimeout(function() { defer.resolve(1); }, 2000); return defer.promise;}function f2() { var defer = $q.defer(); setTimeout(function() { defer.resolve(2); }, 2000); return defer.promise;}function f3() { var defer = $q.defer(); setTimeout(function() { defer.resolve(3); }, 2000); return defer.promise;}//f1进行完,在进行f2,然后进行f3,后一个程序等待前一个完成f1().then(function (data) { console.log(data); // 2s后打印1 return f2();}).then(function (data) { console.log(data); // 再过2s后打印2 return f3();}).then(function (data) { console.log(data); // 再过2s后打印3});
三、 $q.all
$q.all,表示只有当传入的多个deferred执行成功才算成功
var p=$q.all({ dataA:deferA.promise, dataB:deferB.promise})p.then(function(result){ console.log(result.dataA); // this is DATA A console.log(result.dataB); // this is DATA B})
转载地址:http://wpqr.baihongyu.com/