Javascript node.js复制值时出现故障
我有一个react应用程序与drop wizard REST API交互。在我的代码中,我注意到以下奇怪的错误 在尝试设置两个变量的值,然后使用它们来设置状态时,我有以下几点Javascript node.js复制值时出现故障,javascript,node.js,asynchronous,promise,async-await,Javascript,Node.js,Asynchronous,Promise,Async Await,我有一个react应用程序与drop wizard REST API交互。在我的代码中,我注意到以下奇怪的错误 在尝试设置两个变量的值,然后使用它们来设置状态时,我有以下几点 const [inventorRes, sellerRes] = await Promise.all([ LoginTransport.getAllUsers('Inventory Owner'), LoginTransport.getAllUsers('Seller'), ]); 其中LoginTran
const [inventorRes, sellerRes] =
await Promise.all([
LoginTransport.getAllUsers('Inventory Owner'),
LoginTransport.getAllUsers('Seller'),
]);
其中LoginTransport是调用外部API的方法。现在我注意到,在执行此操作时,inventor res和sellerRes都将设置为LoginTransport.getAllUsers(“库存所有者”)的值,而不是相应的参数
当我将其分解为:
const inventorRes = await LoginTransport.getAllUsers('Inventory Owner');
const sellerRes = await LoginTransport.getAllUsers('Seller');
这种行为是正确的
我的理解是:这是一个承诺。所有人都返回了一个无法接受的承诺。javascript是否会尝试将左侧的值与右侧的值匹配?假设这是真的,但我坚持使用Promise.all()我怎么能完成我想做的任务呢
现在我注意到,在执行此操作时,inventor res和sellerRes都将设置为LoginTransport.getAllUsers(“库存所有者”)
的值,而不是相应的参数
这可能是LoginTransport.getAllUsers的错误。你期望它做什么。你的代码的一个简化版本运行得很好——也许你的
LoginTransport.getAllUsers
函数在某种程度上被破坏了,在概念上“同时”运行两次会破坏它。你描述的行为不应该发生。您应该检查LoginTransport.getAllUsers
是否有副作用,如果快速连续调用它,会导致它返回相同的值。您可以这样检查:const p1=LoginTransport.getAllUsers('Inventory Owner');const p2=LoginTransport.getAllUsers(“卖方”);const inventorRes=等待p1;const sellerRes=等待p2代码>我看到giong在调查它