2016-01-22 92 views
0

我很困惑我是否應該在函數完成執行後調用done()return。我明白,完成調用將意味着我必須將它作爲參數傳遞給函數。有人會選擇撥打return而不是done()函數完成執行後調用`done()`和調用`return`有什麼區別?

var foo = 2; 
it('returns 2 on completion', function(done) { 
    expect(foo).toEqual(2); 
    done(); 
}); 

var foo = 2; 
it('returns 2 on completion', function() { 
    expect(foo).toEqual(2); 
    return; 
}) 
+0

使用'done'完成異步測試以表明它已完成。第二種情況下的「返回」沒有區別,可以刪除。 – dfsq

回答

1

無論您使用done()回調或簡單地返回取決於你所使用的API。在各種異步上下文中,回調是必需的。關閉我的頭頂:

在所有這些情況下,done()回調是必要的,因爲他們需要做的工作不能在return之前完成。例如,測試可能包括隨機超時,Express中間件可能會發出網絡請求等。

重要注意事項:函數返回。 done()回調是您在最後使用的慣例,因爲return不夠用,因爲它發生得太快。

相關問題