Вместо этого вы можете использовать объект WinHTTPRequest напрямую (именно это лежит в основе ServerXMLHTTP).У него есть дополнительный метод, который может быть полезен для метода WaitForResponse
.
Set winHttpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
winHttpRequest.Open "GET", "http://localhost/mypage.aspx", true
winHttpRequest.Send
''# Do other request normally here
winHttpRequest.WaitForResponse()
Обратите внимание, что метод Open
имеет true
для своего параметра async
.В этом случае Send
вернется, как только запрос будет отправлен, но до того, как будет получен какой-либо ответ.Теперь вы можете делать другие вещи, такие как сделать другой запрос в обычном синхронном режиме.Сделав это, вы можете убедиться, что первоначальный запрос был выполнен, вызвав WaitForResponse
.
CAVEATs
- Я никогда не делал этого в ASP напрямуюсуществует вероятность того, что вызов
Open
может жаловаться на то, что среда сценариев не "выполняет асинхронные вызовы". - С вашей стороны есть предположение, что можно делать два запроса одновременновремя.Если они относятся к двум разным серверам, то это будет хорошо, если не все еще возможно нормально, но могут быть и другие сложности.
- Вы делаете запросы к странице ASP, каждый запрос создает новый сеанс на этом сервере, просто кое-что, о чем нужно знать.
- С моей стороны есть предположение, что вы не обращаетесь к тому же серверу, на котором работает ваш код, если вы таковы, вы можете пойти на мертвую блокировку пула потоков.