Promise.all
只在所有promise解析时解析,在第一个promise拒绝时拒绝Promise.allSettled
仅在所有promise都解决后才解析Promise.any
只解析第一个解析的promise,当所有的promise都被拒绝时,则拒绝Promise.race
使用与第一个要结算的promise相同的结果结算
JavaScript中的Promise
似乎没有asyncio.as_completed
的等价物,后者会按照它们的解决顺序产生Promises。
是否可以使用用户代码实现asyncio.as_completed
的相同逻辑?
1条答案
按热度按时间vfh0ocws1#
正如其他人所说,在JavaScript中,没有一个完全等同于Python的asyncio.as_completed()函数内置到语言或标准库中。但是,您可以使用JavaScript promise和Promise.allSettled()函数实现类似的行为。
下面是一个如何asyncio.as在JavaScript中模拟www.example.com _completed()行为的示例:
在上面的代码中,delay()函数返回一个在指定毫秒数后解析的promise。这模拟异步延迟。execute()函数表示一个返回promise的异步任务。
processTasks()函数接受一个任务数组。它遍历任务,使用delay()函数引入延迟,异步执行每个任务,并将结果存储在结果数组中。
allSettled()函数用于等待所有的promise在没有短路的情况下解决(resolve或reject),类似于as_completed()。在所有promise都解决之后,返回results数组。
您可以使用自己的任务修改tasks数组,每个任务都包含一个delay属性和一个execute函数,该函数返回表示异步任务的promise。
我不会评论我的意见,如果你应该,因为你只问你是否可以,是的,你可以。