实现以下功能:
compose([a, b, c])('参数') => a( b( c('参数') ) )
function compose(funcs) { var len = funcs.length; var index = len - 1; for (let i = 0; i < len; i++) { if (typeof funcs[i] !== "function") { throw new TypeError("Expected function"); } } return function (...args) { let result = funcs[index](...args); // 第一次 while (--index >= 0) { result = funcs[index](result); } return result; }; }
测试:
function a(str) { return `a ${str}`; } function b(str) { return `b ${str}`; } function c(str) { return `c ${str}`; } const abc = compose([a, b, c]); abc("huyao");
总结 promise.all 的特点
- 接收一个 Promise 实例的数组或具有 Iterator 接口的对象,
- 如果元素不是 Promise 对象,则使用 Promise.resolve 转成 Promise 对象
- 如果全部成功,状态变为 resolved,返回值将组成一个数组传给回调
- 只要有一个失败,状态就变为 rejected,返回值将直接传递给回调 all() 的返回值也是新的 Promise 对象