ES6中的Promise 用法有点难理解,做个demo:
<!DOCTYPE html> <html> <head> <title>test</title> <style> </style> </head> <body> <script> function asyn1(para) { return new Promise(function (resolve, reject) { setTimeout(function () { para >=0 ? resolve(para) : reject(para); }, 2000); }); } function asyn2(para) { return new Promise(function (resolve, reject) { setTimeout(function () { para >=0 ? resolve(para) : reject(para); }, 5000); }); } asyn1(-1).then(function (retVal) { console.log("asyn1 resolve : " + retVal); return asyn2(1); }).catch(function (retVal) { console.log("asyn1 reject : " + retVal); return asyn2(1); }).then(function (retVal) { console.log("asyn2 resolve : " + retVal); }).catch(function (retVal) { console.log("asyn2 reject : " + retVal); return asyn2(1); }) // Promise.all([asyn1(-1), asyn2(2)]).then(function (retVal) { // console.log("promise all resolve: " + retVal); // }).catch(function (retVal) { // console.log("promise all reject: " + retVal); // }); // Promise.race([asyn2(1), asyn1(2)]).then(function (retVal) { // console.log("promise all resolve: " + retVal); // }).catch(function (retVal) { // console.log("promise all reject: " + retVal); // }) </script> </body> </html>
从用法中我们可以看到Promise 其实是一个构造函数, 这个构造函数要传一个函数类型的参数。在new Promise的时候 这个函数类型的参数就会执行。
其实需要实现这个Promise 这样就理解的比较到位了。