【发布时间】:2018-02-09 19:59:25
【问题描述】:
我对 async.js 的功能非常满意,但它似乎缺少我现在需要它做的一件事:
我有一个包含数据的数组。
[{"name": "bob", "age":15},
{"name": "bill", "age":19},
{"name": "john", "age": 24}]
我想以 array[i] 作为参数调用 same 函数,直到它为数组的内容之一返回 true。 (在此示例中,可能将用户写入数据库,直到其中一个至少具有指定年龄,否则返回错误)。 所以: 尝试鲍勃->错误 然后尝试账单 -> 成功 -> 然后继续下一个任务,不要继续
我发现的所有东西都需要一组函数(不是数据),或者似乎不知道“尝试直到找到匹配的”的想法。
或者也许我没有充分阅读docs? 我怎样才能做到这一点?谢谢
【问题讨论】:
-
你为什么还要使用
async呢?迭代一个数组直到某个条件为真只需要基本的循环逻辑,热确定异步如何或为什么进入图片。您可以发布到目前为止您尝试过的完整代码吗?还是minimal reproducible example? -
因为我想在每次迭代时调用服务器。我注意到一个正常的 for 循环只是继续,而不是等待第一个成功。所以我认为 async 可能能够将调用排队并在成功时继续使用另一个函数
-
caolan.github.io/async/docs.html#some 如果 coll 中的至少一个元素满足异步测试,则返回 true。如果任何 iteratee 调用返回 true,则立即调用主回调。
-
我会调查一下,谢谢!
-
虽然在从服务器获取内容的同时使用它听起来是个坏主意,因为它可能会在并行中这样做,并且您仍然会有多个请求,因为它们排队的速度比完成的速度要快。最好有一个数据端点,只需在结果集上执行一个普通的
some谓词。也许下一个限制为 1 的someLimit会起作用,但仍然不理想
标签: javascript arrays async.js