#javascript #promise
Вопрос:
Я использую node-unifi, и базовая структура выглядит так, как выглядит структура запроса:
const unifi = require('node-unifi');
const controller = new unifi.Controller({host: '127.0.0.1', port: 8443, sslverify: false});
controller.login('admin', 'PASSWORD')
.then(result => {
console.log('login: ' result);
return controller.createnetwork(payload);
});
Я пытаюсь обернуть вызов » controller.createnetwork(полезная нагрузка)» в цикл for. Если я использую оператор return, он послушно выходит из цикла при первом запуске. Если я удалю возврат, я получу необработанное предупреждение об ошибке, и на самом деле будет отправлена только последняя итерация цикла.
Каков правильный метод вызова подобной функции в цикле при выполнении обещания?
Заранее спасибо.
Комментарии:
1. Я не вижу петли в вашем коде. Пожалуйста, укажите код, который не работает.
Ответ №1:
Вы можете использовать async/await
синтаксис с try/catch
для достижения синхронного поведения
const unifi = require('node-unifi');
const controller = new unifi.Controller({
host: '127.0.0.1',
port: 8443,
sslverify: false
});
controller.login('admin', 'PASSWORD')
.then(async (result) => {
console.log('login: ' result);
// replace empty array with the values you want to loop on
for (const value of []) {
try {
const networkResp = await controller.createnetwork(payload);
} catch (e) {
console.log(`Error has occurred`);
console.log(e);
}
}
});