使用回调,我有以下代码
var TK = {
List: [],
getSectionA: function(listName, callback)
{
var arrayList = [];
$.get('ajax/test.html', {sendName: listName}, function(data) {
$.each(data, function()
{
arrayList = data;
});
callback(arrayList);
});
}
};
调用函数
$("#dropDownList").change(function()
{
TK.getSectionA(fileName, function(data)
{
TK.List = data;
alert(TK.List); // This works ok...
});
alert(TK.List); // This does not work when calling using this property outside the callback..
});
如何在另一个函数
中的回调函数之外使其工作答案 0 :(得分:1)
jQuery get()函数返回promise接口,允许你添加任意数量的函数来处理get()完成成功(done())或失败(失败)或只是完成任何一种方式(总是())。
promise接口与deferred相同,但只有“只读”方法,所以你不能干扰过程,但你可以看到会发生什么。
如果您退回承诺,它可用于做您想做的任何事情:
var TK = {
List: [],
getSectionA: function(listName, callback)
{
var arrayList = [];
return $.get('ajax/test.html', {sendName: listName}, function(data) {
$.each(data, function()
{
arrayList = data;
});
callback(arrayList);
});
}
};
称之为:
TK.getSectionA(fileName, function(data)
{
TK.List = data;
alert(TK.List); // This works ok...
}).always(function() {
alert("Get ended: " + TK.List);
});
您可以在此页http://api.jquery.com/jQuery.ajax/上阅读,但必须跳到其中包含“承诺”的段落。