首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Promise.all add later a Promise to Array上有可能吗?

在Promise.all中添加后续的Promise到数组中是可能的。Promise.all接受一个Promise数组作为参数,并返回一个新的Promise,该Promise在所有输入的Promise都解决后解决,并将所有Promise的解决值作为数组传递给解决处理程序。

如果在Promise.all调用之后,但在所有Promise都解决之前,将新的Promise添加到数组中,那么这个新的Promise也会被包含在Promise.all的返回Promise中。这意味着,只有当所有已添加的Promise和之前的Promise都解决后,返回的Promise才会解决。

以下是一个示例代码:

代码语言:txt
复制
const promises = [Promise.resolve(1), Promise.resolve(2)];

const laterPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(3);
  }, 1000);
});

setTimeout(() => {
  promises.push(laterPromise);
}, 500);

Promise.all(promises)
  .then((results) => {
    console.log(results); // [1, 2, 3]
  })
  .catch((error) => {
    console.error(error);
  });

在上面的示例中,我们首先创建了一个包含两个已解决Promise的数组。然后,我们创建了一个稍后解决的Promise(laterPromise),并在500毫秒后将其添加到promises数组中。最后,我们使用Promise.all来等待所有Promise解决,并在所有Promise解决后打印结果数组。

请注意,这只是一个示例,实际情况中您可能需要根据具体需求进行适当的处理和错误处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

简单说下Promise.allPromise.race区别和使用场景

之前面试中,被面试官问道Promise.all项目上有没有用到和具体使用场景是什么,由于项目上使用的不多,导致回答的不是很好,回去赶紧把相关知识巩固巩固。...1 Promise.all Promise.all(iterable); Promise.all() 方法接收一个promise的iterable类型(注:Array,Map,Set都属于ES6的iterable...const set = new Set(); set.add(str); set.add(func); set.add(p1); set.add(p2); Promise.all()调用。...那会有个问题,就是如果resolve中的值有一样的,那返回的数组中,会去掉相同的。 我们再往set里面add p3 set.add(p3); 这次返回的不是数组,而是字符串“p3 error”。...4.如果有任何一个失败,该Promise失败,返回值是第一个失败的子Promise的结果。 应用场景:多个异步合并使用,比如多个接口调用成功后显示页面。

1.7K1211

分享4 个你可能感兴趣的 TikTok 前端面试题

其中之一就有来自一家名为 TikTok 公司的Offer,你可能非常熟悉该公司,也有可能不是很熟悉它。 朋友面试的时候,他们让我的朋友当场写代码来实现4个复杂方法的功能。 1....尝试实现Promise.all API Promise.all() 方法将可迭代的 Promise 作为输入,并返回单个 Promise,该 Promise 解析为输入 Promise 结果的数组。...) => { setTimeout(resolve, 100, 'foo'); }); Promise.all([promise1, promise2, promise3]).then((values...fatFishname 1646095230191|fatFish|"front-end-fat-head" storage.getItem('name') // front-end-fat-head // 100s later...ancestor node return findCommonParent(oNode1.parentNode, oNode2) } } 1.5 遍历实现版本 递归很好理解,仅仅通过遍历就可以实现

38710
  • 面字节涨薪70%:朋友却说这题目太没挑战了

    .# 查找两个DOM节点的最近公共父节点 oNode1和oNode2同一文档中,且不会为相同的节点,寻找这两个节点最近的一个共同父节点,可以包括节点本身。...100 * 1000) // fatFishname 1646095230191|fatFish|"前端胖头鱼" storage.getItem('name') // 前端胖头鱼 // 100s later...自己尝试实现一下Promise.all 为什么很多公司都喜欢面手写实现Promise.all呢?可能是相比实现Promise来说他相对简单一些,但是又可以考察候选人对日常Promise的基本掌握?...胖头鱼之前写过一篇因为实现不了Promise.all,一场面试凉凉了, 542个赞,近4万阅读量,也包括Promise的其他静态方法实现,这里直接贴一下Promise.all的实现思路。...3.1# 简要回顾 Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。

    27210

    【MDN学习】JavaScript 之 Promise

    }); 更多示例:传送门 五、Promise.reject(reason) reject()方法返回一个带有拒绝原因的Promise对象,参数即为被拒绝的原因 // 还记得前面是怎么写的?...类型(注:Array,Map,Set都属于ES6的iterable类型)的输入,并且只返回一个Promise实例 Promise.all(iterable); // Promise 传入的是可迭代的对象...]]: "fulfilled" [[PromiseResult]]: Array(3) 0: "OK" 1: "Success" 2: "Nice" length: 3 [[Prototype]]: Array...语法: Promise.any(iterable); // iterable 一个可迭代的对象, 例如 Array,Set,Map 等。...promise结束时,无论结果是fulfilled或者是rejected,都会执行指定的回调函数。这为Promise是否成功完成后都需要执行的代码提供了一种方式。

    91020

    Promise.all并发限制

    背景 通常,我们需要保证代码多个异步处理之后执行,会用到: Promise.all(promises: []).then(fun: function); Promise.all可以保证,promises...那么会出现的情况是,你瞬间发出几十万http请求(tcp连接数不足可能造成等待),或者堆积了无数调用栈导致内存溢出。 这时候,我们就需要考虑对Promise.all做并发限制。...Promise.all并发限制指的是,每个时刻并发执行的promise数量是固定的,最终的执行结果还是保持与原来的Promise.all一致。...实现 我们知道,promise并不是因为调用Promise.all才执行,而是实例化promise对象的时候就执行了,在理解这一点的基础上,要实现并发限制,只能从promise实例化上下手。...enqueue().then(() => Promise.all(ret)); } 因为是promise加上递归,所以代码注释上不太好标注执行顺序,但是大概的逻辑可以总结为: 从array第1个元素开始

    1.8K30

    京东前端常考面试题(附答案)

    我们有一个新的函数声明,createWarp执行上下文中创建一个变量 addadd 只存在于 createWarp 执行上下文中, 其函数定义存储名为 add 的自有变量中。...Promise.allPromise.race的区别的使用场景(1)Promise.all Promise.all可以将多个Promise实例包装成一个新的Promise实例。...Promise.all中传入的是数组,返回的也是是数组,并且会将进行映射,传入的promise对象返回的值是按照顺序在数组中排列的,但是注意的是他们执行的顺序并不是按照顺序的,除非可迭代对象为空。...需要注意,Promise.all获得的成功结果的数组里面的数据顺序和Promise.all接收到的数组顺序是一致的,这样当遇到发送多个请求并根据请求顺序获取和使用数据的场景,就可以使用Promise.all...第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]。curIndex(可选):数组中正在处理的元素的索引。

    1K20

    实现TypeScript运行时类型检查

    .Promise.then中, 这个上下文既是"有可能成功的异步返回值".得力于这种抽象, 我们可以摆脱call back hell和对状态的手动断言(GoLang 的r, err := f()).让我们思考一下...我们早已使用到了, 例如Promise.all方法:all(values: Array>): Promise>;让我们从Promise.all这个特例推导出这个函数的普遍性抽象....Promise.all的执行逻辑(示例所用, 并非node底层实现)如下:创建一个空的Promise r, 并将其值设定为空数组: Promise.resolve([])尝试将values数组中的Promise...的值一个个通过Promise.then串联concat进Promise r.返回Promise r代码实现如下:const all = (values: Array>): Promise...的基础上, 能够基于一个上下文中的值, 灵活地创建另外一个包裹在上下文中的值. -- stackoverflow上的回答Promise.all中, 我们其实只需要将Promise限定为Applicative

    2.4K30

    云开发数据库的事务处理

    云开发数据库文档中其实有一些事务处理的指引和demo,不过基本都是await风格的,只能在异步函数里面使用,有的时候希望用『同步函数+callback』的方式代替await来实现更好的并发执行能力,那就需要用...其实如果能用Promise.all的化代码还能更好看些 /* 以下代码会触发云开发数据库sdk的bug */ db.startTransaction().then(transaction...Math.floor(Math.random()*n),a:3})) } Promise.all(p).then(res=>{ transaction.commit...Promise.all里的数据库操作一多起来,就有一定的概率触发这样的错误: TcbError: [ResourceUnavailable.TransactionBusy] Transaction is...暂时只能用上面的一步一步then的方式来执行了,或者用网上流行的Array.reduce的方式来让Promise排队执行。

    55070
    领券