2017-12-05 9 views
0

こんにちは私はnodejsの初心者です。nodejsevent-drivenです。それはその中で強力な機能です。イベントドリブンアーキテクチャノードjsで安らかなapisを作成しますか?

私は最後の数日間からnodejsを学び、mongodbでそれに安らかなAPIを構築しようとするが、私は以下のAPIでそのevent-drivenアーキテクチャを使用することはできないんだけどされていますが、私のsudoのコードが

//routes 

    app.get('/someUrl', SomeClass.executeSomeController); 


//controller 

    class SomeClass { 
    async executeSomeController(req, res){ 
     let response = awaitSomeHelper.executeQueryAndBusinessLogic(req.body); 
     res.send(response) 
    } 

} 

ようですRorまたはPHPを使用して書いていましたが、controllerが実行中であることがわかりました。asynchronousRorまたはPhpで実行されていません。

どのように私は私はあなたの質問をカバーすることができます

答えて

0

希望を安らかなAPIを構築するためにevent-drivenアーキテクチャを使用することができます。基本的に、場合によっては、「イベント駆動型アーキテクチャ」という言葉は異なって説明することができます。あるケースでは、すべての非同期関数を説明する基本的なコアNodeJSフローです。別のケースでは、質問の根はイベント、イベントエミッタなどに関連する可能性があります。

しかし、すべての非同期アクションを待つという主な考え方です。スレッドのブロッキングを避けるために、それはさらに進んで、重い要求を待たずに残りのコードを処理します。そこで、この非同期機能をどのように扱うべきかを知る必要があります。

基本的な非同期流れ

私は理解して、あなたはNodeJSで非同期操作に関連する質問を持っています。これが技術の根幹です。重い操作はすべて非同期で処理されます。それはV8とイベントループに関するものです。

したがって、非同期操作で作業するには、コールバック関数、約定、または非同期待機構文を使用できます。

コールバック関数

function asyncFunction(params, callback) { 
    //do async stuff 
    callback(err, result); 
} 

function callbackFunction(err, result) { 

} 

asyncFunction(params, callbackFunction); 

約束

promiseFunction() 
    .then(anotherPromiseFunction) 
    .then((result) => { 
    //handle result 
    }) 
    .catch((err) => { 
    //handle error 
    }); 

非同期待つ

function anotherAsyncFunction() { 
    //do async stuff 
} 

const asycnFunction = async (params) => { 
    const result = await anotherAsyncFunction(); 
    return result; 
}; 

イベント/ Eベントエミッタ

const fs = require('fs'); 

const filePath = './path/to/your/file'; 
const stream = fs.createReadStream(filePath); 

stream.on('data', (data) => { 
    //do something 
}); 

stream.on('end',() => { 
    //do something; 
}); 

stream.on('error', (err) => { 
    //do something; 
}); 

これらの方法は、状況やニーズに応じて使用できます。私は非同期フロー(約束事と非同期待遇)で働く現代的な方法があるので、コールバック関数をスキップすることをお勧めします。ところで、 'async-await'も約束を返します。

単純なExpress JS Server(かなり古い構文)の例ですが、依然として有効です。質問をチェックして、書くこと自由に感じてください:ここでは

https://github.com/roman-sachenko/express-entity-based

は、私はあなたをお勧めします記事のリストです:

https://blog.risingstack.com/node-js-at-scale-understanding-node-js-event-loop/ https://blog.risingstack.com/mastering-async-await-in-nodejs/