JavaScript обещает весь массив значений, переданных в качестве аргумента - PullRequest
0 голосов
/ 09 мая 2018

Учитывая следующий массив значений:

var sportList = ['football', 'volleyball'];

Я хочу выполнить запрос к базе данных Монго, используя каждое из следующих значений:

function myFunc(sport, callback) {
  mongoDB.sports.find({'name': sport}, function (error, result) {
    if (error) {
        callback(error)
    } else {
        callback(null, result)
    }
  })
}

поэтому я строю свои обещания как:

var promises = sportList.map(function(val){
    return myFunc(val);
});

и затем пытается запустить цепочку всех в обещании:

Promise.all(promises)
        .then(function (result) {
            console.log('log results: ', result);
        })
        .catch(function (error) {
            console.log(error);
        });

но это не работает, потому что он жалуется, что callback не определен, как я могу исправить это правильно?

1 Ответ

0 голосов
/ 09 мая 2018

Причина ошибки заключается в том, что вы вызываете метод myFunc без указания параметра callback.

Решением было бы заменить функцию myFunc на следующую. Эта функция вернет новый Promise. Я не проверял приведенный ниже код, но он должен работать.

function myFunc(sport) {
  return new Promise((resolve, reject) => {
    mongoDB.sports.find({'name': sport}, function (error, result) {
      if (error) {
          reject(error);
      } else {
          resolve(result);
      }
    })
  }));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...