обработка обещаний javascript

#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);
        }
  }
});