“我正在尝试制作一个console.log(env.BASE_URI)
,成功了。但是,当我尝试打印响应时,它不会将“成功”或“失败:带有“初始值”的字符串”连接起来
它打印中间值,并且,如果我将Ajax call
放在成功或失败中,它也会打印值。在Ajax调用之外无法正常工作
console.log
预期为-loadData : function(groupRID, serviceName) {
var html = 'initial value';
var params = {
codeGroupRid : groupRID,
outputFormat : 'json'
};
html +=' middle'
Util.Functions.eAjax(serviceName, params, {
success : function(response) {
html += ' Success';
return html;
},
failure : function(errMsg) {
html += ' Failure';
return html;
}
});
},
实际是-initial value middle Success
答案 0 :(得分:0)
从成功和失败回调中删除return html;
部分,因为ajax是异步的。如果您在回调中使用return,则它会在获得响应之前返回。
答案 1 :(得分:0)
如@Gokul Raj K.N.说-默认情况下,Ajax是异步方法。所以:
推荐的解决方案:
您应将function
参数添加到loadData
方法中,方法可如下:
loadData(groupRID, serviceName, function (result) {
let loaded_data = result;
// do something with loaded data
});
使用loadData
的{{1}}方法:
callback
不推荐的解决方案:
您可以轻松更改loadData : function(groupRID, serviceName, callback) {
var html = 'initial value';
var params = {
codeGroupRid : groupRID,
outputFormat : 'json'
};
html +=' middle'
Util.Functions.eAjax(serviceName, params, {
async: false,
success : function(response) {
html += ' Success';
callback(html);
},
failure : function(errMsg) {
html += ' Failure';
callback(html);
}
});
},
参数以使其同步。
true (如果此请求应异步运行)。通常应避免将其设置为 false ,因为这将导致UI被阻止,因此用户将无法与浏览器进行交互,直到请求完成为止。 默认值为: true
async