重点
- 知道要在 Promise 上写而不是在原型上写
- 知道 all 的参数(Promise 数组,数组用list表示)和返回值(新 Promise 对象)
- 知道用数组来记录结果 (
const results = []) - 知道只要有一个 reject 就整体 reject
示例代码如下:
Promise.myAll = function(list){
const results = []
let count = 0
return new Promise((resolve,reject)=>{
list.map((promise,index)=>{
promise.then((r)=>{
results[index] = r
count += 1
if(count === list.length){
resolve(results)
}
},(reason)=>{
reject(reason)
})
})
})
实现斐波那契数列的计算:
斐波那契数列是指这样一个数列:0、1、1、2、3、5、8、13、21、34、……,这个数列从第三项开始,每一项都等于前两项之和。也就是说,第n项可以通过以下公式计算得到:F(n) = F(n-1) + F(n-2),其中F(0) = 0,F(1) = 1。
斐波那契数列具有许多有趣的性质和应用,例如在自然界中广泛存在,如树叶、植物的分布、兔子繁殖等。同时,它也被广泛应用于算法、编程、数学等领域中,例如排序算法、图像处理、密码学等。
斐波那契数列(Fibonacci sequence)及相关结论 - 知乎 (zhihu.com)
斐波那契数列的时间复杂度_斐波那契数列时间复杂度_想上天的狗的博客-CSDN博客
以下是一个使用斐波那契数列的计算实现Promise.all()方法的JavaScript代码示例:
function fibonacci(n) {
if (n === 0) {
return Promise.resolve(0);
} else if (n === 1) {
return Promise.resolve(1);
} else {
return Promise.all([fibonacci(n - 1), fibonacci(n - 2)]).then(values => {
return values[0] + values[1];
});
}
}
Promise.all([fibonacci(8), fibonacci(9)]).then(values => {
console.log(values); // 输出 [10, 17]
});