在我得到问题之前,有点(!)的背景知识: 我正在实施一个基于Web的搜索解决方案。使用的技术:javascript(jquery),. net,html等。
我的所有网络服务调用都是通过javascript(跨域ws调用)完成的。我有几个连续的Web服务调用,它们都有不同的成功回调函数。
我无法消化 - 当我在单独的地方单独打电话给那些ws时,他们正在给我正确的结果,但是有时他们会给予,而有时则没有。
示例代码:这并不是一直给出预期的结果。
function submitSearchRequest(_queryString, Stores) {
if (Stores[1].length>0) {
//generate 'searchRequestForArtifact' request object
getSearchResponse("successcallForArtifact", _searchRequestForArtifact);
}
if (Stores[2].length > 0) {
//generate 'searchRequestForPerson' request object
getSearchResponse("successcallForPerson", _searchRequestForPerson);
}
}
function successcallForArtifact(response)
{
//show the results
}
function successcallForPerson(response)
{
//show the results
}
}
答案 0 :(得分:0)
如果您需要按顺序进行,则只有在返回后才需要启动每个搜索。目前,您正在进行异步调用,这意味着它会被启动,然后继续执行代码。目前,如果第二次通话只是更快,则订单将关闭。您将需要进行同步调用,或者只需通过从工件的成功函数调用第二次搜索来强制执行订单。
如果你正在使用JQuery,你可以将async参数设置为false,这将强制你想要的顺序,但它会降低页面的整体性能。请参阅此question。