ajax异步请求的回调函数,函数在异步Ajax回调函数完成之前完成

我正在尝试调用单个函数“MyTopNamespace.Lvl2.BooTest()”,并让该函数返回true或false。

真或假响应基于IF页面源中存在变量评估并设置为true或false ELSE变量在源中不存在Ajax请求评估该响应并设置true或false。我在一个基本的命名空间代码结构中完成了所有这些。

当我调用函数并且页面源中存在变量时,输入IF语句,如果它通过我的评估,函数返回true或者它到达函数的末尾并返回false

这是我的问题:当我输入ELSE语句并进行Ajax调用时,函数结束时返回false,异步Ajax调用完成之前

我尝试了this post中提供的所有解决方案,包括回调函数和延迟承诺。但是,我一直得到错误或未定义的回报...

这是我使用回调函数解决方案的代码。但是,正如我在调用“MyTopNamespace.Lvl2.BooTest()”时所说,我只是得到false。

var MyTopNamespace;

MyTopNamespace = window.MyTopNamespace || {};

var AjaxPass;

MyTopNamespace.Lvl2 = {

BooTestAjax: function (jsonp) {

AJAXmeta = jsonp;

if (typeof AJAXmeta !== 'undefined') {

var enabledStuff = AJAXmeta.ThingTested.split(",");

$(enabledStuff).each(function() {

var tempRegEx = new RegExp(this);

if (tempRegEx.test("FoundInList")) {

AjaxPass = true;

}

});

}

},

BooTest: function () {

var BooResult = false;

if (typeof PageMeta !== 'undefined') {

var enabledStuff = $.trim(PageMeta.ThingTested).split(",");

$(enabledStuff).each(function() {

var tempRegEx = new RegExp(this);

if (tempRegEx.test("FoundInList")) {

BooResult = true;

}

});

return BooResult;

} else {

$.ajax({

url: 'http://www.myserver.com/pagemetadata?outputFormat=json',

dataType: 'json',

success: function(json) {

MyTopNamespace.Lvl2.BooTestAjax(json);

if (AjaxPass) {

BooResult = true;

} else {

BooResult = false;

}

console.log(typeof BooResult);

return BooResult;

}

});

}

return BooResult;

}

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 jqGrid 中使用 formatter 执行异步回调函数可以按照以下步骤操作: 1. 定义 formatter 函数,在函数中发起异步请求获取数据,如下: ``` function myFormatter(cellvalue, options, rowObject) { var result = ""; $.ajax({ url: "/api/getData?id=" + cellvalue, async: true, success: function (data) { result = data; // 执行回调函数 if (options && options.successCallback) { options.successCallback(result); } } }); return result; } ``` 这里的 myFormatter 函数中,通过 ajax 请求异步获取数据,并将结果保存在 result 变量中。在 ajax 请求成功的回调函数中,判断是否传入了 options 对象,并且 options 对象中是否有 successCallback 属性,如果有则执行 successCallback 回调函数并将结果传入。 2. 在 colModel 中使用 formatter 属性指定 formatter 函数,并传入 options 对象,如下: ``` { name: 'xxx', index: 'xxx', formatter: myFormatter, formatoptions: { successCallback: function (result) { // 处理回调函数的数据 // ... } }, // ... } ``` 这里的 name 和 index 属性分别表示列名和列的索引,formatter 属性指定使用 myFormatter 函数对该列进行格式化,formatoptions 属性指定传入的 options 对象,并在 options 对象中定义 successCallback 回调函数,在回调函数中处理 myFormatter 函数的结果。 需要注意的是,由于异步请求是非阻塞的,因此需要在回调函数中处理返的数据,否则可能会出现数据显示不正确的问题。 另外,由于异步请求可能会导致性能问题,因此建议仅在必要时才使用异步函数处理 formatter。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值