Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否等待带有.each()的嵌套ajax完成?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 是否等待带有.each()的嵌套ajax完成?

Javascript 是否等待带有.each()的嵌套ajax完成?,javascript,jquery,ajax,Javascript,Jquery,Ajax,关于等待ajax调用完成,或者等待ajax调用完成时调用或循环的数量动态变化,似乎有很多类似的问题,但我似乎不知道如何将这两种逻辑结合起来 我正在尝试这样做: 返回多个结果的Ajax调用 对于每个结果,进行另一个Ajax调用 从这些辅助调用创建DOM对象 等待所有这些辅助调用完成,以便我可以异步操作它们 函数getUserData(标记){ var请求={ “jsonrpc”:“2.0”, “id”:Math.round(Math.random()*(999999-100000)+100000)

关于等待ajax调用完成,或者等待ajax调用完成时调用或循环的数量动态变化,似乎有很多类似的问题,但我似乎不知道如何将这两种逻辑结合起来

我正在尝试这样做:

  • 返回多个结果的Ajax调用
  • 对于每个结果,进行另一个Ajax调用
  • 从这些辅助调用创建DOM对象
  • 等待所有这些辅助调用完成,以便我可以异步操作它们
  • 函数getUserData(标记){ var请求={ “jsonrpc”:“2.0”, “id”:Math.round(Math.random()*(999999-100000)+100000), “方法”:“UserAdmin.get”, “参数”:{ “api_键”:键, “标签id”:标签 } }; 返回$.ajax({ 键入:“POST”, url:“/api/v1/api.php”, 数据:JSON.stringify(请求), 数据类型:“json” })。然后(getUserProfile,ajaxError); } 函数getUserProfile(数据){ var承诺=[]; $.each(数据、结果、函数(id、值){ var请求={ “jsonrpc”:“2.0”, “id”:Math.round(Math.random()*(999999-100000)+100000), “方法”:“Profile.getInfo”, “参数”:{ “用户id”:id } }; var promise=$.ajax({ 键入:“POST”, url:'api/v1/api.php', 数据:JSON.stringify(请求), 数据类型:“json” }).然后(功能(响应){ var数据=response.result; var twitch=data.gamerid\u twitch; 如果(抽搐!=''){ //这将创建dom对象,但可以/应该是同步的 创建TwitchStreamer(twitch); } },ajaxError); 承诺。推动(承诺); }); $.when.apply(空,承诺).done(函数(){ //我想确保在异步运行之前,一切都已完成 delegateStreamVisibility(); }); }
    一切正常,但
    $。当(…
    在完成对每个结果的调用之前报告它已完成。非常感谢您提供一些指导。

    您需要
    createTwitchStreamer()的每个实例吗
    要在所有请求完成后运行,以确保其以正确的顺序运行?请尝试
    返回$.when.apply…
    ?因为,就目前而言,
    getUserProfile
    返回未定义的帮助!您是如何“报告”它在其他人之前完成的?您所拥有的结构是为了
    delegateStreamVisibility()
    只应在所有请求完成后运行我不需要
    createTwitchStreamer()
    以任何顺序运行,谢谢@fr_andres。
    createTwitchStreamer()
    在开始和完成创建元素时报告。
    delegateStreamVisibility()
    似乎是在运行
    createTwitchStreamer()之后完成的。
    您需要
    createTwitchStreamer()的每个实例吗
    要在所有请求完成后运行,以确保其以正确的顺序运行?请尝试
    返回$.when.apply…
    ?因为,就目前而言,
    getUserProfile
    返回未定义的帮助!您是如何“报告”它在其他人之前完成的?您所拥有的结构是为了
    delegateStreamVisibility()
    只应在所有请求完成后运行我不需要
    createTwitchStreamer()
    以任何顺序运行,谢谢@fr_andres。
    createTwitchStreamer()
    在开始和完成创建元素时报告。
    delegateStreamVisibility()
    似乎是在运行了
    createTwitchStreamer()