вы просто неправильно понимаете принцип запроса...
в функции api передается аргумент-функция (безимянная), которая при успешном выполнении выполняет инструкции...
и к тому-же, мы не знаем когда выполнится эта функция - через 1мс или через 1с(если инет тупой, или комп затупил вдруг)..
потому нормально было бы создать глобальную переменную, в которую нужно сохранить результат в безымянной функции, а потом уже что-то делать со значением..
Код: Выделить всё
<html> <head> <title>Заголовок страницы</title> <script type='text/javascript' src='http://vk.com/js/api/xd_connection.js?2'></script> </head> <body><script>var x; // глобальная переменнаяfunction js_vk_init () { return VK.api("friends.getAppUsers",{},function(data){ arr =data.response ; str=arr.length; x = str.ToString; do_something(); // хотя вызвать потом можно где-угодно, да еще и глобальная переменная у нас есть, значит значение х не потеряется}); }function do_something() { alert(x);}</script><input type="button" onclick="js_vk_init()" value="GO"/> </body></html>
или взять в той функции(если значение больше нигде не нужно, и нужно его обработать всего 1 раз) что-то сделать и все..
Код: Выделить всё
<html> <head> <title>Заголовок страницы</title> <script type='text/javascript' src='http://vk.com/js/api/xd_connection.js?2'></script> </head> <body><script>// просто делаем что-то при получении...function js_vk_init () { return VK.api("friends.getAppUsers",{},function(data){ arr =data.response ; str=arr.length; var x = str.ToString; alert(x);}); }</script><input type="button" onclick="js_vk_init()" value="GO"/> </body></html>
P.S. дополнительный материал:)
функция VK.api() - событийная.. она вызывает безымянную функцию(в данном случае) при наступлении события о завершении запроса.. потому и она вернуть значение не может!
вот пример, как работать может это:
Код: Выделить всё
function api(func) {//тут что-то делается..func(result); // тут вызывается безымянная функция с параметром result( результат прошлых вычислений..)}api(function(data){//тут что-то делается});
из примера видно как это работает...
правильное название - функциональный литерал))
например такой код совершенно правильный:
Код: Выделить всё
var test = function(a,b){return a+b;}test(1,2);//будет 3=)
P.S.S. удачи!