Javascript - вызовите две асинхронные функции параллельно и передайте оба результата в третью. - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу вызвать два запроса mongoose « Parallel » и передать возвращенные данные обоих запросов на клиентскую сторону.

//both queries should be called parallel, not one after another

//query 1
PaperModel.find().then((papers) => {
});

//query 2
ConferenceModel.find().then((conferences) => {
});

//this function should only be called when both the
//queries have returned the data
res.render('Home', {
    Papers: papers
    Conferences: conferences
});

Я пытался посмотреть на это но не выздоровел.Спасибо

1 Ответ

0 голосов
/ 30 ноября 2018

Если PaperModel.find () и ConferenceModel.find () возвращают обещания, вы можете использовать что-то вроде следующего кода:

//query 1
const papers = PaperModel.find();

//query 2
const conferences = ConferenceModel.find();

Promise.all([papers, conferences]).then((values) => {
    res.render('Home', {
        Papers: values[0]
        Conferences: values[1]
    });
})

и другую опцию с функцией переноса с асинхронным синтаксисом ожидания

const getData = async () => {
  const papers = PaperModel.find();
  const conferences = ConferenceModel.find();

  const values = await Promise.all([papers, conferences]);

  res.render('Home', {
    Papers: values[0]
    Conferences: values[1]
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...