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

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

  • first Promise: получить асинхронное значение из другого местоположения файла.
  • second Promise: дождаться получения результата из первого Promise для повторного использованияв файле 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 Ответ

1 голос
/ 20 марта 2019

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

Funtion

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

Main

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...