0

私はnode.js時々非同期関数が本当に信じられないほど汚れてしまうことをプログラミングしています。非同期コードを書きたいが、イベントが発生するとデータを取得する

asyncFunc(error,dt,ld){
//some async code such as db operations
}

次に、イベントの方法でデータを取得したい

asyncFunc.on("dt",function(dt){do something});
asyncFunc.on("error",function(err){i have an error object});
asyncFunc.on("ld",function(ls){loading});

これを行う方法はありますか コールバック地獄に対する約束といくつかのサードパーティライブラリを知っていますが、私の質問は特に、コードを設計する方法を書いた方法ですか?

4

1 に答える 1

2

nodejs イベントを使用する

var asyncFunc = function(error,dt,ld){
    var events = require('events');
    var eventEmitter = new events.EventEmitter();

    //emit error
    eventEmitter.emit('error', new Error('some error'));
    //emit dt
    eventEmitter.emit('dt', 'some data for dt');
    //emit dld
    eventEmitter.emit('ld', {message: 'some details for ld', ld: ld});
    return eventEmitter;
}

//then
asyncFunc.on("dt",function(dt){/*do something*/});
asyncFunc.on("error",function(err){/*i have an error object*/});
asyncFunc.on("ld",function(ls){/*loading*/});

こちら の素晴らしい記事
公式のnodejsイベントドキュメント

于 2015-08-24T17:16:10.123 に答える