каков эффективный способ повторно использовать асинхронную функцию из другого расположения файла в nodejs 4.x?

#javascript #node.js #asynchronous

#javascript #node.js #асинхронный

Вопрос:

Это рабочий пример кода, который вызывает асинхронную функцию из другого расположения и повторно использует результат с некоторыми вычислениями. В этом случае я использовал «Promise» два раза.

  • первое обещание: получить значение async из другого расположения файла.
  • второе обещание: дождитесь получения результата от первого обещания для повторного использования в main.js файл.

Каков эффективный способ выполнить эту операцию с использованием ‘обратных вызовов’ или ‘обещаний’?


Мой код:

в ./folder1/sub.js

 function func(){
    return new Promise(function(resolve,reject) {
        var value = 5; // resolve value
        setTimeout(function(){
            value  = 5;
            err = false;
            if(err) return reject(err);
            resolve(value);
        },3000);
    });
}

module.exports={
    getValue: func
}
  

в ./main.js

 var sub = require('./folder1/sub');

function nextfunc(){
    return new Promise(function(resolve,reject){
        sub.getValue().then(function(val){
            console.log(val);
            // do some calculations
            val =5;
            err = false;
            if(err) return reject(err);
            resolve(val);
        });
    });
}

var last = nextfunc();
last.then(function(last){
    console.log('last -', last);
});
  

Ответ №1:

Попробуйте что-то вроде этого

Функция

 module.exports = function func(value){
    return new Promise(function(resolve,reject) {
        var value = 5; // remove value from here
      .....
  

Главная

 var sub = require('./folder1/sub');

function nextfunc(){

         return sub.getValue(initialValue).then(function(val){
           return sub.getValue(val)
        });

}

var last = nextfunc();
last.then(function(last){
    console.log('last -', last);
});