ECMAScript 2015,也称为 ES6,引入了 JavaScript Promise 对象,用于异步执行运行时间较长的任务。 有两种方式来实现异步编程: 一是使用Promise对象,二是使用async关键字
使用Promise对象
基本用法如下:
/**
* 使用Promise对象执行一个任务
*/
var promise = new Promise((resolve, reject) => {
setTimeout(function() {
resolve('promise end');
}, 1000);
});
console.log("main process start")
/**
then可以传入成功和失败的回调函数
*/
promise.then((msg) => {
console.log(msg);
})
console.log("main process stopped");
执行结果:
main process start
main process stopped
promise end
使用async关键字
更简单的方法是使用async关定义一个异步函数:
/**
* 测试辅助函数: 回调函数
*/
function callback(str){
console.log(str);
}
/**
* 测试辅助函数: sleep函数用于模拟长时间执行任务
**/
function sleep (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
/**
* 异步函数
*/
async function func1(callback) {
await sleep(3000);
callback("func1 callback");
return "func1 return";
}
/**
* 通过回调和返回值两种方式获得异步函数处理的结果
*/
console.log("main process start")
func1(callback).then(res=>{
console.log(res);
});
console.log("main process stopped");
执行结果:
main process start
main process stopped
func1 callback
func1 stopped
func1 return