我有这个功能:
GetMessage: function (code) {
var msg = localStorage.getItem(code);
if (msg == null || msg == 'undefined') {
$.ajax({
type: 'GET',
url: CTHelper.ApiUrl() + '/Api/Case/GetMessage?code=' + code,
async : false,
success: function (result) {
localStorage.setItem(code, result);
return result;
},
error: function (result) {
return '';
}
});
}
else {
return msg;
}
},
第一次调用它时,它会进入服务器($ .ajax)并在 localStorage 中存储一个值,因此第二次等调用会从缓存/存储中获取值
现在,它一直运行良好,但第一次调用,似乎成功函数中的返回结果总是返回未定义。
我认为设置 async:false 可以解决问题,但它没有
在说明我的问题的图片下面
答案 0 :(得分:2)
2个回调函数success
和error
中的return语句不返回GetMessage
函数 - 它们从回调中返回。如果您希望函数返回正确的消息,请将结果分配给msg并始终在GetMessage
结尾处返回:
GetMessage: function(code) {
var msg = localStorage.getItem(code);
if (msg == null || msg == 'undefined') {
$.ajax({
type: 'GET',
url: CTHelper.ApiUrl() + '/Api/Case/GetMessage?code=' + code,
async: false,
success: function(result) {
localStorage.setItem(code, result);
msg = result;
},
error: function(result) {
msg = '';
}
});
}
return msg;
},
请参阅下面的结果