我明白回調是什麼以及異步意味着什麼,我沒有得到的是如何在節點中運行異步功能。Nodejs如何知道是同步還是異步
例如,這是怎麼
var action = (function(data,callback) {
result = data+1;
callback(result);
});
http.createServer(function (req, res) {
action(5, function(r){
res.end(r.toString());
});
}).listen(80);
從這個
var action = (function(data) {
result = data+1;
return result;
});
http.createServer(function (req, res) {
var r = action(5);
res.end(r.toString());
}).listen(80);
不同?
我想在第一個例子中,我正在異步做它,但我不知道節點如何知道什麼時候做同步或異步...是否是返回的問題?或者在同步模式下我們正在做的事實var x = func(data);
?
還有:何時使用同步或異步?因爲顯然你不想在添加+1時使用它......只是在執行IO任務時才使用異步,比如從DB讀取數據?
例如,我正在使用庫加密來加密一個短字符串(最多50個字符),這是一個很好的例子,我應該已經在使用異步了嗎?
好的,那麼我完全誤解了所有的東西......假設我有一個函數做了幾件事情,我希望它在'後面'運行,這樣它就不會阻塞主循環,一旦完成,我想要運行回調操作。那我該怎麼辦?用0ms設置超時? –
@CarlosNavarro可能['setImmediate'](https://nodejs.org/api/timers.html#timers_setimmediate_callback_arg)。但是,您應該意識到使用它不會奇蹟般地讓您的代碼不會阻止事件循環。最後,JS是單線程的,所以它一次只能「做」一件事。 – robertklep