zoukankan      html  css  js  c++  java
  • 循环中,调用异步接口获取数据

    问题描述:for循环中,异步调用后端接口无效(同时执行所有任务,导致页面卡死)

    提示:循环不能是异步的,for循环是同步任务,内部的异步任务会在for循环执行完成后执行

    解决方法:循环中使用递归。使用递归函数在事件循环的单独轮次中执行迭代,在事件循环的单独轮次中执行递归,不会导致调用栈溢出。

    ()事件循环的每个轮次中调用其他事件处理程序的调用栈最初是空的)

    这个问题涉及事件循环:

    1、所有同步任务都在主线程上执行,形成一个“执行栈”

    2、主线程之外,还存在一个“任务队列”,只要异步任务有了结果,就在“任务队列”中放置一个事件

    3、一旦执行栈的所有同步任务完成,系统就读取“任务队列”对应异步任务,结束等待状态,进入执行栈,开始执行(执行异步回调)

    4、主线程不断重复(3)步骤

  • 相关阅读:
    计算机系统概述
    Qt学习--初学注意事项
    Qt实现一个简单的TextEditor
    Qt 用户登录界面
    C++ 模板
    多态与虚函数
    继承与派生
    C++ 运算符重载
    web安全-点击劫持
    web安全问题-cookie
  • 原文地址:https://www.cnblogs.com/shuhaonb/p/10364896.html
Copyright © 2011-2022 走看看