使用 setTimeout 调用一次 forEach 的回调函数即可完成
Calling a callback function once forEach is complete using setTimeout?
好的,所以这个问题之前已经问过了,但我没有看到我喜欢的答案,认为我找到了解决方案,但想确认一下。 基本上,我在 React 中调用了一个函数,该函数中有一个forEach
循环。 我需要等待在forEach
循环完成后做某事。
我可以为此使用setTimeout(function(){},0)
吗? 我知道一旦堆栈被清除,setTimeout
就会被调用,但这适用于异步函数吗?
这就是我想要完成的:
function doSomethingAsync(){
arr.forEach(function(){
//loop through this thing
});
setTimeout(function(){
callback()
}, 0);
};
在过去的 30 分钟内,我一直在测试这个,它正在做我想做的......但我不想假设这将是一个一致的方法。 思潮?
基本上,我在 React 中调用了一个函数,其中包含一个 forEach 循环。我需要等待在 forEach 循环完成后执行某些操作。
我可以为此使用 setTimeout(function(){},0) 吗?
不。有两种可能性:
-
forEach
正在执行同步工作,在这种情况下,setTimeout
是不必要的和毫无意义的——在循环完成之前,包含它的函数不会返回,因此您可以在调用该函数后执行下一件事。 -
forEach
正在启动异步工作,在这种情况下,setTimeout
只是引入了一种混乱情况:它可能在异步工作完成之前触发,也可能在异步工作完成后触发。如果在所有这些异步请求完成后需要回调,则要调用的函数必须提供该回调供您使用。
所以要么你不需要它,要么你不能使用它。
相关文章:
- 如何将一个JavaScript函数回调为多个函数
- Meteor:异步函数回调异常:onAfterAction
- 从类方法中的 ajax post 函数回调函数更改 javascript 类属性
- jQuery动画函数回调错误
- jquery在html属性中添加函数回调,以便在其他事件中调用
- jquery getjson 函数:回调返回错误的字符串
- postMessage - 多个 postMessage 事件/函数/回调
- 在 Promise 调用的错误函数回调后附加对象的用法是什么
- 单击事件后的 JavaScript 函数回调
- 设置超时函数回调静态变量
- Jquery UI 模式匿名函数回调以打开对话框
- 函数回调、局部变量和 chrome.storage.sync.get
- Jquery Ajax 没有拾取选项参数中指定的函数回调
- 如何在 javascript 中进行函数回调
- 用函数回调封装JavaScript
- jQuery JavaScript嵌套异步函数回调
- Node.js-匿名函数回调
- 函数回调超出范围
- php代码的Javascript函数回调
- 如何使用函数回调在更改时提交表单