我有一个与删除向导 REST API 交互的反应应用程序。在我的代码中,我注意到以下奇怪的错误。
在尝试设置两个变量的值,然后使用它们来设置状态时,我有以下内容
const [inventorRes, sellerRes] =
await Promise.all([
LoginTransport.getAllUsers('Inventory Owner'),
LoginTransport.getAllUsers('Seller'),
]);
其中 LoginTransport 是一种调用外部 API 的方法。现在我注意到,在这样做时,发明人res和sellerRes都将设置为LoginTransport.getAllUsers('库存所有者'(的值,而不是各自的参数。
当我把它分解成:
const inventorRes = await LoginTransport.getAllUsers('Inventory Owner');
const sellerRes = await LoginTransport.getAllUsers('Seller');
行为是正确的。
我的理解是:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all 是 Promise.all 返回了一个可迭代对象。难道 javascript 不会尝试将左手的值与右手匹配吗?假设这是真的,但我坚持使用 Promise.all(( 我怎么能完成我想做的任务?
现在我注意到,在这样做时,发明人 res 和 sellerRes 都将设置为
LoginTransport.getAllUsers('Inventory Owner')
的值,而不是各自的参数。
那将是LoginTransport.getAllUsers
的错。 Promise.all
做你期望它做的事情。