$(document).ready(function() {
var asyncTask = function(index) {
console.log('开始执行任务: '+index);
var exeTime = Math.ceil(Math.random()*10000);
var result = exeTime%3;
var dfd = $.Deferred();
setTimeout(function() {
if (result == 0) {
dfd.resolve('任务' + index + '执行成功,执行时间:' + (exeTime/1000) , {message:'ok'}); // 状态 resolve
} else if (result == 1) {
dfd.reject('任务' + index + '执行失败,执行时间:' + (exeTime/1000)); // 状态 reject
}else {
dfd.notify('任务' + index + '执行警告,执行时间:' + (exeTime/1000)); // 状态 notify
}
}, exeTime);
return dfd;
}
function resolve (result , obj) {
console.info(result + obj.message);
}
function reject (result) {
console.error(result);
}
function notify (result) {
console.warn(result);
}
for (var i=1; i<=100; i++) {
asyncTask(i).then(resolve, reject, notify);
}
});
异步处理回调规范(http://wiki.commonjs.org/wiki/Promises/A):任务状态:未完成(unfulfilled)、完成(fulfilled)、失败(failed);效果可以打开开发者工具查看