ECMAScript ,也称为 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 startmain process stoppedpromise 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 startmain process stoppedfunc1 callbackfunc1 stoppedfunc1 return