1
resposta

Chamadas Assincronas

Bom dia, estou com a seguinte situação, tenho o arquivo a.js, que chama uma função do arquivo b.js, dentro do b.js tem uma outra função que esta no arquivo c.js, o problema e que essa função faz uma chamada assincronia do modulo fs.

como eu faco para esperar o retorno de todas essas funções na mesma ordem que as chamei ?. Terei que criar uma Promise em cada função ? .

a.js

var b = require('./b');
function a(valor) {
    return b.vai();
}
console.log(a());

b.js

var c = require('./c');
function MinhaClass(params) {
    this.vai = testeB;
}
function testeB(){
    var res = c.vai();
    return "b" + res;
}

module.exports = new MinhaClass();

c.js

var fs = require('fs');

function MinhaClass(params) {
    this.vai = testeC;
}
function testeC(){
    return new Promise(function(resolve, reject){
        fs.readFile('./teste.txt',function(erro, sucesso){
            resolve(sucesso)
        });
    })

}

module.exports = new MinhaClass();

A ideia aqui e entender como trabalhar quando tenho duas chamas síncronas e uma assíncrona em sequencia, ambas dependendo do resultado da que chama.

1 resposta

é, nesse caso aí o melhor é tudo ser promise. Ou você pode passar um callback do a para o b e outro do b para c. Aí os callbacks vão sendo chamados em função do retorno de c.