function add(num) { return new Promise((resolve, reject) => { console.log(num + ' + ' + num + ' = ' + (num + num)) if (num > 10) { setTimeout(resolve(num + num), 200) } else { setTimeout(reject, 200, 'error') } }) } function dec(num) { return new Promise((resolve, reject) => { console.log(num + ' - ' + 10 + ' = ' + (num - 10)) setTimeout(resolve, 150, num - 10) }) } function ride(num) { return new Promise((resolve, reject) => { console.log(num + ' * ' + num + ' = ' + (num * num)) setTimeout(resolve, 100, num * num) }) } function exc(num) { return new Promise((resolve, reject) => { console.log(num + ' / ' + 10 + ' = ' + (num / 10)) setTimeout(resolve, 50) }) } function start() { var sum = new Promise((resolve, reject) => { console.log('开始:') resolve(11) }) sum.then(add) .then(dec) .then(ride) .then(exc) .catch(err => { console.log(err) }) }
一。promise理论:promise分为三种状态:进行中、成功( resolve )、失败( reject )。
二。用途: ajax请求同步执行(只有前面执行完了,才会执行后面的,解决以前回调函数难以维护的问题。)等。或者是需要前面执行完之后才能执行后面的函数这一类的问题。而且只要前面有一处没有执行成功,后面就不再执行。
三。具体理论参考:阮一峰的es6标准入门。