我想在foreach
完成后执行回调,但它不能正常工作。我该怎么做呢?
var response = [];
myArray.forEach(function(data) {
data.asyncFunction(function(result) {
response.push(result);
});
}, function() {
console.log(response); // Not being called.
});
console.log(response); // (Empty) Executed before foreach finish.
试试看:
myArray.forEach(function(element, index, array){
asynchronous(function(data){
if (index === myArray.length - 1) {
response.push(data);
functionAfterForEach();
}
})
});
因为foreach
只接受一个回调
。由于您正在foreach
中调用异步方法,因此需要检查是否完成了所有asyn调用
var response = [];
myArray.forEach(function(data, index) {
data.asyncFunction(function(result) {
response.push(result);
if(response.length === myArray.length) {
//foreach work done
}
});
});
问题内容: 如标题所示。我该怎么做呢? 我想在forEach循环遍历每个元素并完成一些异步处理后调用。 有可能使它像这样工作吗?当forEach的第二个参数是一个回调函数,该函数一旦经过所有迭代便会运行? 预期产量: 问题答案: 不能提供这种效果(如果可以的话),但是有几种方法可以实现您想要的效果: 使用一个简单的计数器 (由于@vanuan等),这种方法可确保在调用“完成”回调之前处理所有项目。
问题内容: 我想淡出一个元素(将其不透明度转换为0),然后在完成后从DOM中删除该元素。 在jQuery中,这很简单,因为您可以指定动画完成后要执行的“删除”操作。但是,如果我希望使用CSS3过渡进行动画处理,是否可以知道过渡/动画何时完成? 问题答案: 对于过渡,您可以使用以下内容通过jQuery检测过渡的结束: 对于动画,它非常相似: 请注意,您可以将所有浏览器前缀的事件字符串同时传递到bin
问题内容: 在Angular 1中,我编写了一个自定义指令(“ repeater-ready”),可在迭代完成后与之一起使用以调用回调方法: 标记中的用法: 如何在Angular 2中实现类似的功能? 问题答案: 您可以使用类似以下内容(ngFor局部变量): 然后,您可以使用设置器拦截输入属性的更改
问题内容: 在css3动画的情况下,有什么方法可以实现回调函数?如果使用Javascript动画,则可能会在CSS3中找到实现它的方法,但找不到任何方法。 我可以看到的一种方法是在动画持续时间之后执行回调,但是并不能确保始终在动画结束后立即调用它。这将取决于浏览器UI队列。我想要一个更强大的方法。有什么线索吗? 问题答案: 就在这里。回调是一个事件,因此您必须添加事件侦听器才能捕获它。这是jQue
问题内容: 我正在使用AngularJS,并希望在动画制作完成后得到通知。我知道可以使用像这样的javascript定义的动画来完成此操作,但是我很好奇我是否可以不用javascript来做到这一点。 问题: 是否可以使用角度 ng-enter 和 ng-leave css- transitions并指定完成的回调?我猜该事件已被触发,因此应该有一种方法可以执行此操作。 我有这个: HTML: C
问题内容: 我正在使用以下node.js代码从某些url下载文档并将其保存在磁盘中。我想知道何时下载该文档。我没有看到使用pipe进行任何回调。或者,下载完成后是否可以捕获任何“结束”事件? 问题答案: 流是,因此您可以听某些事件。如您所说,有一个请求事件(以前是)。 有关可用的事件的更多信息,请查看流文档页面。