порядок обработки функций js

[Удален]
818

Такая проблема.

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

Пример с контактом есть метод friends.get(.......... ,callback);

Вот код для миниатюры :


<script language="javascript">
function vk(){
alert('1');

VK.api("friends.get", {fields:"first_name,photo, last_name, sex, online"}, function(){

alert('2');
});
}

function test(){
alert('3');
}

Инициализация ......

vk();
test();
</script>

Алеры появляются в порядке 1 - 3 - 2, хотя нужно чтобы 1 - 2 - 3, как это можно обойти ?

Спасибо!

Изменить архитектуру не очень хочется, и не получиться.

R
На сайте с 06.02.2011
Offline
62
#1

VK.api поставь async:false

[Удален]
#2
RControl:
VK.api поставь async:false

VK.api("friends.get", {fields:"first_name,photo, last_name, sex, online"}, {async:false}, function(){

alert('2');

});

НЕт, не помогло.

R
На сайте с 06.02.2011
Offline
62
#3

не совсем верно, это ajax? тогда просто async:false без фигурных скобок

[Удален]
#4

Ну если без фиг. скобок на отказ работать перестает, это библиотека контакта, по сути аякс - кросс доменный.

R
На сайте с 06.02.2011
Offline
62
#5

кроссдоменный будет только json формат, а он базируется на script, если ты к другому домену хочешь обратить через аякс, то придется указывать точно dataType или сразу обертку поставь json, но он будет только так работать, никак иначе.

Или как вариант обращайся на свой же домен на пхп скрипт, который будет уже брать данные с другого домена, тогда сработает все последовательно

[Удален]
#6

Это библиотека конаткта, думаю у них это уже все решено нужно как-то включить просто синх. режим но пока я не знаю как.

R
На сайте с 06.02.2011
Offline
62
#7

ВКонтакте API » Документация » IFrame-приложения

Асинхронная инициализация

В отличие от обычной, асинхронная инициализация Open API, позволяет производить инициализацию платформы параллельно инциализации Вашего JavaScript-кода. Для использования асинхронной инициализации, добавьте следующий HTML и JavaScript код сразу же после открытия тега:

<div id="vk_api_transport"></div>

<script type="text/javascript">

window.vkAsyncInit = function() {

VK.init({

apiId: ВАШ_API_ID

});

};

setTimeout(function() {

var el = document.createElement("script");

el.type = "text/javascript";

el.src = "http://vkontakte.ru/js/api/openapi.js";

el.async = true;

document.getElementById("vk_api_transport").appendChild(el);

}, 0);

</script>

[Удален]
#8
RControl:
ВКонтакте API » Документация » IFrame-приложения

Асинхронная инициализация
В отличие от обычной, асинхронная инициализация Open API, позволяет производить инициализацию платформы параллельно инциализации Вашего JavaScript-кода. Для использования асинхронной инициализации, добавьте следующий HTML и JavaScript код сразу же после открытия тега:
<div id="vk_api_transport"></div>
<script type="text/javascript">
window.vkAsyncInit = function() {
VK.init({
apiId: ВАШ_API_ID
});
};

setTimeout(function() {
var el = document.createElement("script");
el.type = "text/javascript";
el.src = "http://vkontakte.ru/js/api/openapi.js";
el.async = true;
document.getElementById("vk_api_transport").appendChild(el);
}, 0);
</script>

Это чуть-чуть не то, это для внешних сайтов, у меня айфрейм который вызывается из окна Вконтакте.

http://vkontakte.ru/pages.php?o=-1&p=IFrame-%EF%F0%E8%EB%EE%E6%E5%ED%E8%FF

R
На сайте с 06.02.2011
Offline
62
#9

ну такс в чем проблема ? блокируйте браузер пользователя асинхронной инициализациий, что бы он судорожно жал ctrl+alt+del не понимая, что автор сайта, хочет облегчить его жизнь своей 1-2-3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий