[英]Javascript: variable in outer function not changed by inner function
我對我相信Java閉包的誤解有一個小問題。
我有這段代碼-
getStdOpts: function(tbl, filt) {
var vals = new Array();
this.srvs.getStdOptions(
{ tbl: tbl },
{
'ok': function(rsp) {
for (var i in rsp) {
vals.push({ value: rsp[i].id, text: rsp[i].descr });
}
}
}
);
return vals;
}
本質上,盡管getStdOptions調用中的內部函數(“ ok”:function ...)將新值推入vals數組,但從調用外部進行訪問時,vals數組為空。 當從內部函數中訪問時,vals包含所有預期的元素。
我真的很感激我能在這個問題上獲得任何幫助。
我懷疑這是一個關閉/范圍的問題。 如果this.srvs.getStdOptions
是異步操作,則您的getStdOpts
總是將返回一個空數組。 一旦操作完成,該數組將被填充,正如您所寫的那樣,將在您需要它之后。 您將不得不處理一些不同的事情。 要么你需要直接傳遞到getStdOpts
回調這將需要vals
作為參數和您的匿名一個內執行的回調this.srvs.getStdOptions
,或者你需要返回某種承諾對象可向其中添加回調(這實際上將根據需要使用與參數相同的vals
)-您必須在匿名回調中解析您希望將vals
作為其“承諾”結果的承諾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.