Promise最大的好处是在异步执行的流程中,把执行代码和处理结果的代码清晰地分离了:
function p(url){
return new Promise(function (resolve, reject){
$.ajax({
url,
dataType: 'json',
success(arr){
resolve(arr)
},
error(err){
reject(err);
}
})
});
}
Promise.all([
p('data/json.json'),
p('data/arr.txt'),
p('https://www.easy-mock.com/mock/5db284afd9f3aa5b4d9036e8/getList/#!method=get')
]).then(
function(arr) {
let [a,b,c] = arr;
console.log("pass");
console.log(a);
console.log(b);
console.log(c);
},
function (err) {
console.log("fail");
console.log(err);
}
);
Promise.all([
$.ajax({url:'data/json.json',dataType:'json'}),
$.ajax({url:'data/arr.txt',dataType:'json'}),
$.ajax({url:'https://www.easy-mock.com/mock/5db284afd9f3aa5b4d9036e8/getList/#!method=get',dataType:'json'}),
]).then(
function(result) {
let [a,b,c] = result;
console.log("pass");
console.log(a);
console.log(b);
console.log(c);
},
function (err) {
console.log("fail");
console.log(err);
}
);
async 函数,就是 Generator 函数的语法糖,它建立在Promises上,并且与所有现有的基于Promise的API兼容。