Promises: keep track of matching input/output identifiers(承诺:跟踪匹配的输入/输出标识符)
问题描述
假设我需要通过API发出几个请求,以便在数据库中存储一些数据。每个条目在客户端都有一个唯一的标识符。但是,在远程端插入时,它将获得新的唯一标识符。这是不能更改的,即我不能强制远程端使用相同的标识符。当承诺解析时,该标识符(以及其他一些数据)被发送回客户端。跟踪所有这些信息的最佳实践是什么。
插图:
最后,我想象可能有一个像
这样的关联数组我非常有信心可以编写一些可以完成这项工作的代码,但这可能是充满反模式的糟糕代码。所以我想先问一问:推荐的方法是什么?
推荐答案
看起来您是并行(而不是串联)进行更新的,因此您可以使用Promise.allSettled
,它接受承诺的可迭代(类似于数组),等待所有承诺都得到解决(实现或拒绝),然后以与提供给它的可迭代相同的顺序返回一个数组。然后,您可以循环访问,并应用新ID以成功更新。
类似以下内容(在async
函数中):
下面是一个示例,其中的承诺被故意乱序处理,以证明结果数组与输入可迭代数组的顺序相同(因为您不确定是这样的):
数据-lang="js"数据-隐藏="真"数据-控制台="真"数据-巴贝尔="假">因为您可以看到,尽管"id2"
的操作比"id1"
和"id3"
的操作花费的时间更长,但它在结果中仍处于第二位。
如果由于某种原因不能使用async
函数:
这篇关于承诺:跟踪匹配的输入/输出标识符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!