我有这段代码:
function dialogTexts(message) {
var langText = $.ajax({
type: 'GET',
url: '/index.php/main/dialogtexts',
dataType: 'json'
});
langText.done(function(data) {
message(data);
});
langText.fail(function(ts) {
alert(ts.responseText);
});
}
dialogTexts(function(text) {
alert(text.delete);
});
我正在使用回调来提醒字符串text.delete(在上面的代码中),但我想做类似的事情:
dialogTexts(function(text) {
return text;
});
var deleteConfirmationDialogText = dialogTexts.delete;
alert(deleteConfirmationDialogText); //deleteConfirmationDialogText is undefined
答案 0 :(得分:1)
dialogTexts
是一个函数,它没有属性.delete
。这就是为什么当您尝试使用dialogTexts.delete
时undefined
为dialogTexts(function(text) {
return text;
});
的原因。你根本无法使用你想要做的那种快捷方式。
另外,这里的return语句:
dialogTexts()
什么都不做。它只是返回到return text
内部的回调调用者,并且调用者没有对返回值执行任何操作,因此dialogTexts(function(text) {
alert(text.delete);
});
无效。
如果你想提醒你的文字,你必须做你最初的事情:
{{1}}
这是唯一可行的方法,这是异步编程如何与AJAX调用一起使用的结果。还有一些其他处理回调的技术(例如promises),但它们都要求你在回调函数中处理异步返回的数据。这只是异步编程的本质。