鍍金池/ 問(wèn)答/HTML/ promise流程的實(shí)現(xiàn)

promise流程的實(shí)現(xiàn)

下面是需求,然后我是一個(gè)一個(gè)的promise寫(xiě)下去,三個(gè)promise都包含在了customfnc函數(shù)里面,我該怎么寫(xiě)customfnc函數(shù)才能將這個(gè)函數(shù)里面的promise一個(gè)一個(gè)的執(zhí)行出來(lái)?

/*
實(shí)現(xiàn)效果 實(shí)現(xiàn)PROMISE的流程控制

var func1 = function() {
//這個(gè)函數(shù)return 一個(gè)promise
};

var func2 = function(res1) {

// 這個(gè)函數(shù)可以選擇使用res1
// res1 是上一個(gè)函數(shù)Promise的結(jié)果
// 這個(gè)函數(shù)也return 一個(gè)promise

};

var func3 = function(res2) {

// 跟func2一樣

};

// 這些函數(shù)組數(shù)量不是固定的
// 你寫(xiě)的函數(shù)需要把PROMISE一個(gè)一個(gè)進(jìn)行 不能是同時(shí)的
// 就像 func1().then(func2).then(func3) 一樣

customfnc([func1, func2, func3])
.then(function(res) {
// 最終結(jié)果
})
.catch(function(err) {
// 如果上面有出現(xiàn)問(wèn)題 會(huì)停止進(jìn)行下一個(gè)函數(shù) 這里可以catch到
});

*/

回答
編輯回答
疚幼
function customfnc (executors) {
  return executors.reduce((p, exe) => p.then(exe), Promise.resolve())
}
2017年9月13日 16:21