2016-01-08 46 views
-6

如何控制JavaScript首先運行哪個函數, 我並不總是希望該特定函數先運行,而是運行其他函數。 怎麼辦?如何控制哪個函數首先在Javascript中運行

+1

將「that」功能放在「其他」後面 –

+5

請您分享一下您的代碼嗎?你的問題太模糊,無法回答。謝謝 – Christos

+0

在「其他」之後調用「that」功能 – Oriol

回答

0

JavaScript是單線程的,取其被調用的函數按該順序執行。這條規則唯一的例外是事件循環如何執行。

因此,對setTimeout或setInterval的調用無法給出真正的想法,首先會調用哪個方法。即使您使用setTimeout具有相同的時間間隔。第三種方法應該首先在事件隊列中執行,但這可能會受到實現的影響。

如果你想同步evented函數,你會有一系列的工具和庫,它們只是你需要的。

當某種工作完成時,回調方法可用於調用延續。這種模式已經在稱爲Promise的更復雜的數據結構中得到了改進。

承諾與回調幾乎相同,但它們在語法上更好用。

回調:

function foo(id, callback){ 
    //ajax.get('/data/' + id, callback) 
    ajax.get('/data/' + id, function (data) { 
    callback(data) 
    }) 
} 
foo(id, function (data) { 
    alert(data) 
}) 

承諾:

function foo(id) { 
    return promiseGet('/data' + id) 
} 
foo(4).then(function (data) { 
    alert(data) 
}) 

承諾的好處是,它們可以被鏈接,因此,您可以使用異步的API,很像通常同步的API。所有的「然後」部分將按照您添加它們的順序執行。

以下是諾基亞的網站,對諾言做了很好的解釋。 https://www.promisejs.org/

0

使用自調用函數表達式

如:

(function (i) { 
    console.log(i): 
})(5); 

並確保,這到來之前任何類似的功能,包括一個在外部添加腳本

相關問題