promise 在JavaScript的世界中,所有代码都是单线程执行的。 由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。异步执行可以用回调函数实现 Promise对象一定会执行函数(承诺)然后,根据结果是成功还是失败,在将来的某个时候调用then函数或catch函数 例子: new Promise(test).then(function (result) { console.log('成功:' + result); }).catch(function (reason) { console.log('失败:' + reason); }); 可见Promise最大的好处是在异步执行的流程中,把执行代码和处理结果的代码清晰地分离了 串行执行异步任务 job1.then(job2).then(job3).catch(handleError); 并行执行异步任务 var p1 = new Promise(function (resolve, reject) setTimeout(resolve, 500, 'P1'); }); var p2 = new Promise(function (resolve, reject) { setTimeout(resolve, 600, 'P2'); }); // 同时执行p1和p2,并在它们都完成后执行then: Promise.all([p1, p2]).then(function (results) { console.log(results); // 获得一个Array: ['P1', 'P2'] }); var p1 = new Promise(function (resolve, reject) { setTimeout(resolve, 500, 'P1'); }); var p2 = new Promise(function (resolve, reject) { setTimeout(resolve, 600, 'P2'); }); // 同时执行p1和p2,仅要1个完成后执行then: Promise.race([p1, p2]).then(function (result) { console.log(result); // 'P1' });