1
17
您可以在一个简短的函数中完成此操作。(根据naomik的建议按顺序返回值。谢谢!)
|
2
3
编辑杰夫·鲍曼(Jeff Bowman)极大地改进了他的答案,以解决有意义的价值观。请随意查看此答案的历史,以了解为什么解析值如此重要/有用。 节流阀
此解决方案非常类似于本机
这是怎么回事…
有什么不同…
控制台输出输入按顺序运行;解析结果与输入的顺序相同
实际使用
让我们看一个更实用的代码示例。这段代码的任务是从服务器获取一组图像。这就是我们可以使用的
|
3
2
没有任何内置的功能,因此您必须构建自己的。AFAIK,也没有这个库。 首先,从“延期”开始——一种允许外部代码解决问题的承诺:
然后您可以定义一个“等待队列”,它表示等待进入关键部分的所有代码块:
最后,您可以定义异步信号量,如下所示:
示例用法:
此方法首先创建一个节流器,然后立即启动所有异步操作。每个异步操作将首先(异步)等待信号量释放,然后执行操作,最后释放信号量(允许另一个信号量进入)。当所有异步操作完成后,将检索所有结果。
|
4
0
您可以使用pub-sub模式来实现这一点。我也不熟悉typescipt,我不知道这是发生在浏览器还是后端。我将为此编写伪代码(假设它是后端):
如果您在Node中工作,EventEmitter是NodeJS的一部分。如果在浏览器中,则可以使用普通事件模型。这里的关键思想是发布订阅模式。 |
5
0
可以用发电机限制承诺。在下面的示例中,我们对它们进行节流,以便
|
6
0
下面是一个节流功能的版本,使用
|
7
0
下面是我使用TypeScript的看法:
用法:
在JavaScript中也是如此:
|
tomography · 更改承诺类型 2 年前 |
Aristocles · 许诺抛出错误后是否继续执行所有提取? 2 年前 |
Centurion22 · 异步函数内的异步映射函数未定义响应数据 2 年前 |
Scott Thiessen · 完成后逃离承诺链[重复] 6 年前 |
adcomptyler · 向Twilio视频快速启动添加静音按钮 6 年前 |
JWiley · 带有FileReader的Promise函数过早解析 6 年前 |
John Lippson · 在所有异步函数完成后执行函数? 6 年前 |
ctf0 · 解析嵌套承诺后运行函数 6 年前 |