我有一个react应用程序与drop wizard REST API交互。在我的代码中,我注意到以下奇怪的错误。
在尝试设置两个变量的值然后使用它们来设置状态时,我有以下
const [inventorRes, sellerRes] =
await Promise.all([
LoginTransport.getAllUsers('Inventory Owner'),
LoginTransport.getAllUsers('Seller'),
]);
其中LoginTransport是一种调用外部API的方法。现在我注意到,在执行此操作时,Inventor res和sellerRes都将设置为LoginTransport.getAllUsers('Inventory Owner')的值,而不是相应的参数。
当我把它分解为:
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()我怎么能完成我想做的任务?
答案 0 :(得分:1)
现在我注意到,在执行此操作时,发明人res和sellerRes都将设置为
LoginTransport.getAllUsers('Inventory Owner')
的值而不是相应的参数。
那将是LoginTransport.getAllUsers
的错误。 Promise.all
does你期待它做什么。