javascript - 将扩展运算符与 Promise.All() 一起使用会得到不同的结果,具体取决于哪个请求解决得更快?
问题描述
如果我有以下代码以不可靠的方式返回响应(即,您永远不确定哪个会更快完成),这会改变变量的分配吗?
例子:
const [response1, response2] = await Promise.all([request1, request2])
将response1
始终包含 的响应request1
,或者是否有可能如果request2
解析得更快,它会被分配给声明的第一个变量?为了代码示例,您可以假设它request1
是对 APIrequest2
的标准fetch()
调用。
解决方案
将扩展运算符与 Promise.All() 一起使用会得到不同的结果,具体取决于哪个请求解决得更快?
No. Promise.all()
收集所有结果,并按照您将 Promise 放入数组的顺序将所有结果呈现给您。 哪个请求先完成并不重要。
需要注意的是,如果有任何 Promise 被拒绝,那么Promise.all()
将立即报告该拒绝,而无需等待其他 Promise。
如果我有以下代码以不可靠的方式返回响应(即,您永远不确定哪个会更快完成),那会改变变量的分配吗?
不会。它不会改变结果的顺序。 Promise.all()
为您保留结果的顺序。这是它的特点之一。
将
response1
始终包含响应request1
是的。
还是有可能如果
request2
解决得更快,它会被分配给声明的第一个变量?
不。
推荐阅读
- javascript - 如何使用 opencart 3 在特色/产品列表内容中显示/显示产品购物车数量
- android - Android Room - 执行海量表迁移后如何执行 VACUUM?
- mysql - Laravel 缓慢的 mysql 查询延迟
- python - Many2many 到 ir.ui.menu 没有显示 odoo12 中的所有菜单项
- python - 当填充一些字节时,如何使用 Numpy 从缓冲区中读取值?
- java - 从sqlite中的json搜索值 - Android
- angular - 如何从角度应用程序将多个文件作为对象数组发送到 node.js 服务器?
- python-3.x - 如何使用python从字符串中弹出任何字符?
- react-native - 如何解决此 api 调用问题?
- python - Python:等待最外面的异步函数