2014-02-07 34 views
0

我一直在研究JavaScript中的異步編程。我一直在通過許多代碼片段和jQuery方法,如果我們將一個回調函數作爲參數傳遞給另一個函數,它會異步執行。回調在該函數執行完成後執行。如何編寫異步JavaScript方法?

我已經通過Stack Exchange網絡上關於此主題的一些答案。有人說:我們不能讓我們的代碼異步的,除非我們依賴於一個本地方法來實現該功能

看到這裏https://stackoverflow.com/a/9516967

ALSE這裏https://softwareengineering.stackexchange.com/a/194591

另一個人說,只是路過回調事件使得我們的代碼異步。 https://softwareengineering.stackexchange.com/a/194581

我的問題是,什麼使代碼異步,只是傳遞一個回調,或者我們應該依賴像setTimeout或setInterval這樣的本機方法來獲得異步功能?

+0

你不能用'setTimeout'或'setInterval'實現異步JavaScript。這完全違背了「真正」異步的含義。定時器不能是異步的,因爲它們依賴於這麼多東西。雖然如果我繼續我的獨白,我認爲我會到電腦中沒有什麼是「真實」異步的地步(當然,如果我們不認爲代碼可以在多個線程甚至多個核心上運行):) –

+0

最簡單的方法就像你所說的那樣創建一個「計時器」。這仍然需要客戶端繼續運行您的代碼或異步代碼將停止執​​行......服務器端RESTful調用將允許您進行休息調用(異步在服務器上運行),然後得到回調這個問題,然而是架構性質和因此這不是適合它的論壇。 – abc123

回答

1

異步意味着在處理I/O時JavaScript是非阻塞的。

下面是Node.js in Action樣本:

$.post('/resource.json', function (data) { // I/O does not block execution 
     console.log(data); 
    }); 

注意,代碼爲NOT這樣寫的:

var data = $.post('/resource.json'); 
console.log(data);