У меня есть приложение-приложение, взаимодействующее с мастером сброса REST API. В моем коде я заметил следующую нечетную ошибку.Сбой с node.js обещает копирование значений
В попытке установить значения двух переменных и затем использовать их, чтобы установить состояние, я имел следующий
const [inventorRes, sellerRes] =
await Promise.all([
LoginTransport.getAllUsers('Inventory Owner'),
LoginTransport.getAllUsers('Seller'),
]);
, где LoginTransport представляет собой метод, который вызывает внешний API. Теперь я заметил, что при этом, как изобретатель 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(), как я мог выполнить задачу, которую я хочу сделать?
пропущенная версия вашего кода работает просто отлично - https://jsfiddle.net/pjh7djx8/ - возможно, ваша функция 'LoginTransport.getAllUsers' сломана каким-то образом, когда ее запуск дважды концептуально« в то же время »прерывается это –
Поведение, которое вы описываете, не должно происходить. Вы должны проверить, имеет ли 'LoginTransport.getAllUsers' некоторый побочный эффект, который заставляет его возвращать одно и то же значение, если оно вызывается быстро. Вы можете проверить это следующим образом: 'const p1 = LoginTransport.getAllUsers ('Ownerory Owner'); const p2 = LoginTransport.getAllUsers ('Продавец'); const inventorRes = ожидание p1; const sellerRes = wait p2; ' – JLRishe