0

Работаю с vk api. Написал функцию которая работает и получает массив друзей.

function getFriends(id) {


    VK.init({
        apiId: my_id;
    });

    VK.Api.call('friends.get', {user_id: id, fields: ['uid']}, function(r) {
        if(r.response) {
            return r.response;
        }else{
            alert("Не удалось получить список друзей!")
        }

    });
}

Пытаюсь получить этот массив в другой функции, но значение undefined

function func() {
    var arr1 = getFriends(1); // вот здесь undefined вместо массива
}

Как правильно вернуть массив?

hunter
  • 1,347
  • 4
  • 17
  • 34
George
  • 61
  • Не уверен, но вроде бы в текущем примере кода вы возвращаете r.response.response, а не r.response. – hunter Aug 02 '16 at 21:08
  • Там конечно же просто return r.response; r = r.response; - эта строка лишняя. Ошибка все равно – George Aug 02 '16 at 21:47
  • VK.Api.call асинхронный и значение вы не вернёте никак, учите асинхронщину – andreymal Aug 03 '16 at 08:42
  • @andreymal Спасибо, буду знать в какую сторону смотреть. – George Aug 03 '16 at 09:44
  • @andreymal получается нет вообще способа вернуть значения никакие? Или есть все же какие-то методы? ( callback или еще что-то)? – George Aug 03 '16 at 10:15
  • Собственно, function(r) это и есть callback :) – andreymal Aug 03 '16 at 10:23
  • @andreymal а есть механизм чтобы выполнить это присвоение, только когда данные придут, тоесть колбэк сработает. Как вобще это реализовать ?

    function func() { var arr1 = getFriends(1); // вот здесь undefined вместо массива }

    – George Aug 03 '16 at 11:44

0 Answers0