Как сделать параллельный запрос nodejs?

213
18 мая 2017, 11:34

Возникла проблема, до конца не могу понять, как работать с асинхронными языками. Функция работает, отдает мне нужный объект, но только после второго запроса на сервер При первом запросе возвращает пустой array, потом заполняет его, а при втором запросе уже выдает

'use strict'; 
 
const user2 = require('../models/base'); 
var array =  []; 
var i =0; 
 
 
 
exports.getEda = email =>  
   
  new Promise((resolve,reject) => { 
 
   	 user2.count().exec(function(err, count){ 
 
  var random = Math.floor(Math.random() * count); 
  var calories = 2500; 
 
  test(calories); 
 
     
  function test(calories, random) { 
    user2.findOne().skip(random).exec( 
    function (err, result) { 
      random = Math.floor(Math.random() * count); 
       
      var stringify = JSON.stringify(result); 
      var jsonContent = JSON.parse(stringify);    
      calories = calories - jsonContent.calories; 
      console.log(calories); 
      if (calories > 0){ 
      test(calories, random); 
      }  
         
      array[i] = result; 
        i++;   
         
  });    
  } 
         
  console.log(array); 
       
}) 
 
    .then(eda => resolve(array)) 
    .catch(err => reject({ status: 500, message: 'Internal Server Error !' })) 
  
  });

READ ALSO
как в vuejs по клику на кнопку поменять цвет

как в vuejs по клику на кнопку поменять цвет

Есть у меня кнопки выведены с помощью vuejs

258
Javascript Array.prototype.reduce

Javascript Array.prototype.reduce

Внимание: это не вопрос о том, как решить задачу симметричной разностиЭто вопрос про Array

230
Не работает метод 'slickGoTo' slickSlider'a в событии 'afterChange'

Не работает метод 'slickGoTo' slickSlider'a в событии 'afterChange'

ПриветВообщем суть - лендинг сверстан на fullpage

336
Как использовать async/await в Node.JS и другие best practices?

Как использовать async/await в Node.JS и другие best practices?

Решил начать изучение NodeJS с ES6 и TypeScript

295