JQuery: ожидайте обратного вызова перед возвратом

У меня есть функция JavaScript, которая просит некоторые ajax данные и возвращает объект JSON. Затем это должно возвратить объект.

Проблема состоит в том, что я не знаю, как сделать функциональный возврат из обратного вызова Ajax. Конечно,

myFunction: function() {
    $.get(myUrl, function(data) {
        return data;
    });
}

не работает, потому что внутренняя функция возвращается вместо внешнего.

С другой стороны, выполнение, в чем я нуждаюсь только в обратном вызове, повредит мое подразделение MVC: этот код находится в модели и мне d'like для использования объекта результата в контроллере.

Временное обходное решение

myFunction: function() {
    var result = $.ajax({
        url: myUrl,
        async: true,
        dataType: 'text'
    }).responseText;
    return eval(result);
}

который имеет недостаток блокирования браузера при ожидании ответа (и с помощью оценки, которой я избежал бы).

Есть ли какие-либо другие решения?

7
задан Andrea 17 January 2010 в 17:06
поделиться

2 ответа

Вы могли бы просто передать обратный вызов к вашей функции, чтобы обработать данные, когда она готова:

myFunction: function(callback) {
    $.get(myUrl, function(data) {
        callback( data );
    });
}
10
ответ дан 6 December 2019 в 23:06
поделиться

Почему вы хотите, чтобы это вернуть объект? Если вы намереваетесь использовать этот объект после, лучший способ поставить функцию с использованием данных в обратный вызов.

1
ответ дан 6 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: