Как встроить обещание в модуль node.js? - PullRequest
0 голосов
/ 30 апреля 2018

Я попытался встроить обещание в модуль node.js, но не могу вернуть значение в результате, и второй блок кода обещания запускается перед обещанием в модуле. Однако должно быть наоборот. Код после «then» должен запускаться после обещания в модуле NodeJs. Кроме того, я был вынужден использовать глобальные переменные, и я знаю, что это не очень хороший подход.

auth4.js

module.exports = 
    new Promise ((resolve,error)=>{

    setTimeout(function(){ 
        ok = "should appear last too"; 
        console.log("called in module and should be first", 
        JSON.stringify(credentials));
    }, 10000);

    resolve(ok);
    error(ok);
});

main.js

global.ok = "";
global.credentials = {username:'jojo',password:'test123'};
require('./auth4.js').then(function(result){
    console.log("should be displayed last",result);
});

1 Ответ

0 голосов
/ 30 апреля 2018

Я думаю, вы ищете

// auth4.js
module.exports = function(credentials) {
    return new Promise((resolve, error) => {
        setTimeout(() => {
            console.log("called in module and should be first", JSON.stringify(credentials));
            resolve("should appear last too");
        }, 10000);
    });
};

// main.js
require('./auth4.js')({username:'jojo',password:'test123'}).then(function(ok) {
    console.log("should be displayed last", ok);
});
...