能夠知足需求,且使用方法和Promise.all統一javascript
var a = function() { return new Promise(function(resolve, reject) { setTimeout(function() { console.log('a') resolve('a') }, 1000) }) } var b = function(data) { return new Promise(function(resolve, reject) { console.log('b') resolve(data +'b') }) } var c = function(data) { return new Promise(function(resolve, reject) { setTimeout(function() { console.log('c') resolve(data +'c') }, 500) }) } // 組織函數隊列 function reduce(arr) { var sequence = Promise.resolve() arr.forEach(function(item) { sequence = sequence.then(item) }) return sequence } // 順序執行函數隊列 reduce([a, b, c]) .then(function(data) { console.log(data)// abc }) .catch(function(e) { console.log(e) })