0
function getFriends(id){
    var reqResult = $.ajax({
        url : url,
        data : {
            user_id : id,
        },
        type : "GET",
        dataType : "jsonp",
        success : function(data){
            return data;
        }
    });
}

Как сделать, чтобы функция getFriends возвращала результат ajax запроса? Параметр async не влияет на это, так как ajax возвращает JSONP.

AlTheOne
  • 2,050

2 Answers2

1

Используйте промисы:

function getFriends(id) {
        return new Promise(function (resolve, reject) {
            $.ajax({
                url: url,
                data: {
                    user_id: id,
                },
                type: "GET",
                dataType: "jsonp",
                success: resolve
            });
        });
    }
    getFriends(id).then(function(data) {
    //here is your data
    }, onReject)
JavaJunior
  • 1,538
  • $.ajax и так возвращает промис (deferred), можно просто его в данном случае возвращать, вы обернули в лишний) – Artem Gorlachev Oct 18 '18 at 07:43
  • Это понятно, но вопрос был 'Как сделать, чтобы функция getFriends возвращала результат ajax запроса' – JavaJunior Oct 18 '18 at 07:46
  • Ну видимо не совсем понятно... return $.ajax(... – функция аналогично будет работать. Но если уж и отвечать на вопрос, то вернет результат только async функция, у вас она не результат возвращает) – Artem Gorlachev Oct 18 '18 at 07:48
  • Здесь под результатом имеется ввиду success : function(data){return data;} и реализация исходя из этого. Думаю автору так понятней будет. А вообще можно обойтись и одним колбеком – JavaJunior Oct 18 '18 at 08:07
  • да нет, как раз в вопросе автор хочет этот ответ получить в возврате функции getFriends – Artem Gorlachev Oct 18 '18 at 08:30
1

Чтобы был именно возврат результата, стоит использовать асинхронные функции:

async function getFriends(id) {
    return await $.ajax({
        url: url,
        data: {
            user_id: id,
        },
        type: "GET",
        dataType: "jsonp"
    });
}

const friends = await getFriends();