当前位置: 首页 > news >正文

Javascript 普通非async函数调用async函数

假设我们有一个异步函数

async function asyncFunction() {console.log("开始执行异步函数");await new Promise(resolve => setTimeout(resolve, 1000)); // 模拟异步操作console.log("异步函数执行完毕");
}

我们在调用这个异步函数时,比如在一个普通函数里调用它

for(var i=0; i< 10; i++)
{await asyncFunction()
}

可能会遇到这个错误:

仅允许在异步函数和模块顶级使用 "await"

这是因为async 函数是异步函数,它返回一个 Promis,await必须与async一同出现。所以这里普通函数无法调用它。

解决方法是使用.then()

我们新建一个普通非async函数

function myFunction() {console.log("开始调用异步函数");asyncFunction().then(() => {console.log("异步函数调用完毕");});
}for(var i=0; i< 10; i++)
{myFunction()
}

这样就可以了,如果需要有返回值:

function myFunction() {let result = "";console.log("开始调用异步函数");asyncFunction().then((re) => {result = re; //不要在then里直接返回,否则仍然是Promise对象console.log("异步函数调用完毕");});return result; 
}for(var i=0; i< 10; i++)
{console.log(myFunction())
}

http://www.lryc.cn/news/456781.html

相关文章:

  • 【LeetCode】修炼之路-0004-Median of Two Sorted Arrays【python】
  • C++面试速通宝典——10
  • 肺腺癌预后新指标:全切片图像中三级淋巴结构密度的自动化量化|文献精析·24-10-09
  • 基于jmeter+perfmon的稳定性测试记录
  • 前沿论文 M5Product 组会 PPT
  • navicat~导出数据库密码
  • 【Java】 —— 数据结构与集合源码:Vector、LinkedList在JDK8中的源码剖析
  • YOLOv5改进——添加SimAM注意力机制
  • SQL 自学:表别名的运用与对被联结表使用聚集函数
  • jmeter学习(2)变量
  • 【C#生态园】C#文件压缩库全面比较:选择最适合你的库
  • 【测试】接口测试与接口自动化
  • Android设置边框圆角
  • SpringBoot项目打成jar包,在其他项目中引用
  • 【音频可视化】通过canvas绘制音频波形图
  • 解决github每次pull push输入密码问题
  • Java重修笔记 第六十四天 坦克大战(十四)IO 流 - 标准输入输出流、InputStreamReader 和 OutputStreamWriter
  • prctl的函数和pthread_self函数
  • Vim 命令行模式下的常用命令
  • 【动态规划-最长递增子序列(LIS)】力扣2826. 将三个组排序
  • Elastic Stack--16--ES三种分页策略
  • [LeetCode] 315. 计算右侧小于当前元素的个数
  • 【hot100-java】二叉树展开为链表
  • 如何在在 YOLOv3模型中添加Attention机制
  • 单点登录Apereo CAS 7.1安装配置教程
  • windows C++-移除界面工作线程(一)
  • Qt小bug — LINK : fatal error LNK1158: 无法运行“rc.exe“
  • c++小游戏
  • k8s为什么用Calico
  • HashMap 和 Hashtable 有什么区别?