影刀执行js指令的冷知识分享
评论
收藏

影刀执行js指令的冷知识分享

经验分享
皮凯
2026-02-27 15:30·浏览量:804
皮凯
影刀高级开发者
发布于 2026-02-27 15:30804浏览

热心肠的皮凯又来分享了
知识点:影刀JS指令与异步/延时函数的处理

在影刀中执行JavaScript指令时,如果插入的JS函数是异步的(如 async/awaitPromisesetTimeout 等),可能会遇到一个问题:影刀的JS指令执行是同步的,它不会等待你的异步或延时操作完成,而是会立即执行完当前脚本并尝试返回结果。这导致无法获取到异步操作最终产生的数据。

解决方案:利用浏览器全局变量进行数据传递和状态检查

由于影刀本身无法自己感知JS内部的异步执行状态,我们需要一种机制来“等待”异步操作完成。我个人使用的方法是利用浏览器的全局对象 window 作为数据存储和通信的桥梁。

具体步骤如下:

  1. 执行异步任务: 在第一个JS指令中,启动你的异步或延时任务,并确保该任务在完成时,将其结果赋值给一个全局变量,例如 window.myData = result;

  2. 等待数据就绪: 在后续的流程中,添加一个“循环等待”。在这个循环体内,使用另一个JS指令来读取刚才存储的全局变量,例如 return window.myData;

  3. 校验数据: 将从JS指令返回的结果(即 window.myData 的值)不为空进行判断。

  4. 退出循环: 当读取到的数据不再是空值时,说明异步任务已经完成并将结果存入了全局变量,此时可以跳出循环,继续执行后续步骤,获取到 window.myData 中存放的数据。


另外如果你这里是用js发送请求那么也可以用影刀的监听指令来进行循环等待

收藏5
全部评论1
最新
发布评论
评论