Promise是什么?
- 主要用于异步计算
- 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
- 可以在对象之间传递和操作promise,帮助我们处理队列
Promise 基本用法
- 我们定义了三个方法
runAsync1
runAsync2
runAsync3
- 例如,我们现在的需求是,调用
runAsync1()
,使用返回的值当做参数调用runAsync2()
,使用返回的值当做参数调用runAsync3()
,意思是:上面三个方法有依赖关系, 3依赖2依赖1,接下来利用Promise
实现按序调用
function runAsync1() {
return new Promise((resolve, reject) => {
console.log('异步任务1执行完成');
resolve(1);
})
}
function runAsync2(num = null) {
return new Promise((resolve, reject) => {
if (num !== null) {
console.log('异步任务2执行完成');
resolve(2);
} else {
reject('Error: 调用 runAsync2 参数为空!');
}
})
}
function runAsync3(num = null) {
return new Promise((resolve, reject) => {
if (num !== null) {
console.log('异步任务3执行完成');
resolve('程序执行完毕!');
} else {
reject('Error: 调用 runAsync3 参数为空!');
}
})
}
runAsync1().then(res => {
return runAsync2(res);
}).then(res => {
return runAsync3(res);
}).then(res => {
console.log(res);
}).catch(err => {
console.error(err);
})
- 运行结果