ES6中的Promise对象、ES7中的async&await

mac2026-05-08  2

一、Promise对象:用来解决异步回调地狱现象(回调函数多层嵌套,代码横向延伸)

/* resolve:成功时的参数; reject:失败时的参数; */ var p1 = new Promise(function (resolve, reject) { var a = 10; var b = 5; if(a > b){ resolve("我是第一个resolve"); }else { reject("我是第一个reject"); } }); var p2 = new Promise(function (resolve, reject) { var a = 2; var b = 5; if(a > b){ resolve("我是第二个resolve"); }else { reject("我是第二个reject"); } }); console.log("================"); console.log(1); console.log("================"); p1 .then(function (data) { console.log(data); return p2; },function (err) { console.log(err); }) .then(function (data) { console.log(data); },function (err) { console.log(err); }); console.log("================"); console.log(2); console.log("================");

二、async、await、Promise一起使用:ES7语法中才能这么使用

async:修饰一个函数,使函数变成异步函数; await:只有在使用了async修饰的函数体中,才可以使用await; await修饰是一个Promise对象。 async function test() { //以下代码是同步的 var data1 = await new Promise(function (resolve, reject) { if(1 == 1){ resolve(1); }else { reject(2); } }); console.log(data1); var data2 = await new Promise(function (resolve, reject) { if(1 == 2){ resolve(3); }else { reject(4); } }); console.log(data2); }
最新回复(0)