2015-07-13 48 views
1

我對JavaScript有一個基本的理解,並且一直在學習異步函數在node.js中的工作方式。回調函數帶有參數錯誤,我一直很困惑。例如,這裏的一些代碼:Node.js回調函數錯誤參數說明?

contact.saveContacts = function(contactArray, done) { 
     var jsonfile = require('jsonfile') 
     jsonfile.writeFile('data.json', contactArray, done) 
} 

Contact.saveContacts(contacts, function(err) { 
     console.log('success') 
} 

我的問題是,爲什麼回調函數包含的參數錯誤?我很困惑爲什麼它在那裏,因爲它好像在它所調用的函數中沒有任何用處。

回答

0

萬一寫操作出現問題,例如權限錯誤對象被調用,並且原因是爲了防止意外錯誤。 想象一下,我們給出了一個命令,讓計算機開始這樣做,但在路上關於計算機不能寫入該目錄的權限塊在這種情況下,計算機不知道該怎麼辦,我們的程序崩潰,以防止這個內部回調,我們指定了什麼在這種情況下,例如如果權限被拒絕,並且原因是寫入權限提示用戶輸入密碼並強制寫入或打開用戶框,則該用戶必須以用戶身份運行此操作

0

如果一切順利,則error參數沒有用處精細。但是,如果出現錯誤,它非常有用。任何類型的錯誤,例如運行時錯誤,文件已被刪除或任何事情,如果發生,錯誤的細節將出現在回調的錯誤參數中。因此,它更好地使用該參數如下:

Contact.saveContacts(contacts, function(err) { 
    if(err){ 
     console.log(err); 
    } 
    else{ 
     console.log('success'); 
    } 

} 

這樣,你會知道任何錯誤,如果這發生與函數。

+0

或只是'console.log(err ||'success');',因爲'err'在使用時將是非僞造的。 – dandavis

+0

@dandavis:是的。這很好用... – amulya349

2

這是一種稱爲錯誤的第一個回調的模式,並在JavaScript中使用了很多。

請參閱this article以供參考。

1

通常,同步函數要麼成功返回,可能會返回一個值,要麼在出現問題時拋出異常。調用代碼可以選擇在發生異常時執行什麼操作,方法是捕獲並檢查錯誤,或者讓它落入可處理錯誤的其他代碼。

調用代碼已經執行後調用異步回調函數。這意味着沒有機會捕捉拋出的異常。因此,而不是拋出,錯誤傳遞到回調函數,所以調用代碼可以處理成功和錯誤狀態。