Sat
Ученик (74)

Как передать параметры функции обратного вызова (JavaScript)?

Дело в том, что мне нужно посылать асинхронные запросы для неопределенного числа объектов одновременно (то есть - первый запрос пошел, не ожидая ответа сервера пошел второй запрос). На каждый объект в случае успеха сервер должен выслать ответ, а браузер вставить его в определенное место.

Но ведь эта самая вставка делается при помощи функции обратного вызова, а ей невозможно приписать параметры! Так бы я мог передать объект запроса в качестве параметра данной функции, а на основе этого уже разбираться - какой ответ сервера куда вставлять. А сейчас, без параметров, у меня первый ответ вставляется, а второй уже нет.

При этом, если второй запрос выслать только по окончании работы первого, то все будет ОК!

Так вот вопрос - как передать функции обратного вызова параметры? Или как создать множество объектов XHR неопределенного размера?

Буду рад любой информации!
Регистрируйтесь, делитесь ссылками в соцсетях, получайте на WMR кошелек 20% с каждого денежного зачисления пользователей, пришедших на проект по Вашей ссылке. Подробнее
ЛУЧШИЙ ОТВЕТ
!
Знаток (387)
Кто сказал, что нельзя передавать параметры. Используйте анонимные функции. Примерный код такой:

req.onreadystatechange = Update(req,param1,param2,...); //здесь req объект запроса, который возвращает функция типа createRequest

А саму функцию Update (обратный вызов) пишем так:

function Update(XHR,param1,param2,...)
{
return function() //анонимная функция
{
... //Ваши действия. Работать можете прямо с XHR - он хранит указатель на КОНКРЕТНЫЙ объект запроса.
XHR.onreadystatechange = null; //обрываете привязку к функции обратного вызова. Строка обязательная, иначе работать не будет.
}
}


Ну вот как-то так :)