在jQuery中返回一个回调函数的值?

时间:2014-03-13 22:02:29

标签: javascript jquery return-value

我有这段代码:

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

1 个答案:

答案 0 :(得分:1)

dialogTexts是一个函数,它没有属性.delete。这就是为什么当您尝试使用dialogTexts.deleteundefineddialogTexts(function(text) { return text; }); 的原因。你根本无法使用你想要做的那种快捷方式。


另外,这里的return语句:

dialogTexts()

什么都不做。它只是返回到return text内部的回调调用者,并且调用者没有对返回值执行任何操作,因此dialogTexts(function(text) { alert(text.delete); }); 无效。

如果你想提醒你的文字,你必须做你最初的事情:

{{1}}

这是唯一可行的方法,这是异步编程如何与AJAX调用一起使用的结果。还有一些其他处理回调的技术(例如promises),但它们都要求你在回调函数中处理异步返回的数据。这只是异步编程的本质。