2015-10-09 21 views
0

我有一個函數需要等待另一個函數完成才能調用,所以我嘗試使用jquery deferred。因此,例如:函數的範圍在調用後調用

firstFunction().done(secondFunction) 

secondFunction在其範圍this關鍵字的一些用法,所以當它通過done把它叫做沒有適當this屬性訪問。更多這些功能被放置在不同的文件中。有沒有辦法撥打secondFunction與適當的this屬性?

+1

一些代碼會很好 - 但'.bind'可能是你要找的東西 –

回答

1

是的,你可以將函數綁定到正確的上下文。

對於IE9和最多可以使用原生的JavaScript這一點,即Function.prototype.bind

firstFunction().done(secondFunction.bind(this)); 

如果由於某種原因需要支持IE8,那麼你要麼需要填充工具它(對此有專門的MDN配方頁面鏈接在上面),或者您可以使用underscore's bind,因爲它是骨幹網所必需的,所以應該可用。

firstFunction().done(_.bind(secondFunction, this));