1、Promise
Promise代表了一种异步操作的结构,可以链式调用then方法以及catch方法,在操作完成后执行后续操作。例如:
//定义第一个函数
function first() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('first operation completed');
resolve();
}, 2000);
});
}
//定义第二个函数
function second() {
console.log('second operation completed');
}
//通过Promise执行顺序控制
first().then(second);
这里 first()
返回一个Promise对象,then
将等待此Promise对象解决(resolve),并执行相应的后续操作。
2、async/await
async/await 是 ECMAScript 2017 中加入的新特性,是一种将异步操作以同步化的方式表示的语法结构。例如:
//定义第一个函数
async function first() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('first operation completed');
resolve();
}, 2000);
});
}
//定义第二个函数
function second() {
console.log('second operation completed');
}
//通过async/await执行顺序控制
async function run() {
await first();
second();
}
run();
这里的 await
关键字会等待Promise响应解决后再继续执行下面的代码,从而实现了异步操作的同步化表达。