串行执行异步任务
function multiply(input) {
return new Promise(function (resolve, reject) {
console.log('calculating ' + input + ' x ' + input + '...');
setTimeout(resolve, 500, input \* input);
});
}
// 0.5秒后返回input+input的计算结果:
function add(input) {
return new Promise(function (resolve, reject) {
console.log('calculating ' + input + ' + ' + input + '...');
setTimeout(resolve, 500, input + input);
});
}
var p = new Promise(function (resolve, reject) {
console.log(‘start new Promise…’);
resolve(123);
});
p.then(multiply)
.then(add)
.then(multiply)
.then(add)
.then(function (result) {
console.log('Got value: ' + result);
});
并行执行异步任务
const p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 1000, ‘P1-Value’)
})
const p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 5000, ‘P2-Value’)
})
Promise.all([p1,p2]).then((res) => {
console.log(res);
})
多个异步任务打印优先返回的结果
const p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 1000, ‘P1-Value’)
})
const p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 5000, ‘P2-Value’)
})
Promise.race([p1,p2]).then((res) => {
console.log(res);
})
// 由于p1执行较快,Promise的then()将获得结果’P1’。p2仍在继续执行,但执行结果将被丢弃。