node筆記-回撥及 events 模組處理非同步
阿新 • • 發佈:2018-12-22
NodeJS通過非阻塞 I/O、事件驅動機制,讓 Node.js 程式巨集觀上也是並行的,當用戶連線了,觸發一個內部事件,通過非同步返回結果。
NodeJS可以使用回撥函式和事件驅動來進行非同步結果的處理。
function getData (){ // 模擬請求資料 var result=''; setTimeout (function(){ result='這是請求到的資料' },200); return result; } console .log( getData ()); /* 非同步導致請求不到資料 */
解決方法一:回撥函式
/ / 正確的處理非同步 :
function getData (callback){
// 模擬請求資料
var result='';
setTimeout (function(){
result='這是請求到的資料';
callback(result);
},200);
}
getData (function( data ){
console.log(data) ;
})
解決方法二: events 模組
var events = require('events'); var EventEmitter = new events.EventEmitter(); EventEmitter.on('to_spread',function(data){ console.log(data);//接受廣播 }); setTimeout(function(){ console.log('開始傳送廣播'); EventEmitter.emit('to_spread'); },1000)