【发布时间】:2022-11-26 13:12:38
【问题描述】:
我写了一些丑陋的代码来验证我是否可以查询一个对象。
const quoterContract = getQuoterContract(quoterAddress, QuoterABI, provider);
const quotePromises = poolData.map(data => {
const dataEnclosure = data;
const quote = getQuotedPrice(quoterContract, tradeAmount, data.token0, data.token1, data.feeAmount ?? 0)
.then(r =>{
dataEnclosure.isQuotable = true;
return dataEnclosure;
})
.catch(err => {
dataEnclosure.isQuotable = false
return dataEnclosure;
});
return quote;
})
const quoteData = await Promise.all(quotePromises)
quoteData.forEach(d => {
console.log(` ${d.name} is quotable ${d.isQuotable}`);
});
//Function pseudo code for clarification
const getQuotedPrice = async (a,b,c,d) => {...}
这是非常丑陋和冗长的,我想简化,但我认为 typescript 中不存在 asyc iterables。有没有更简单的方法来写这个?
【问题讨论】:
-
TS 确实支持异步迭代,但它们似乎不适用于此处。除了不必要的
dataEnclosure和quote变量外,您的代码看起来很合理,可以省略它们而不会影响清晰度 -
@CertainPerformance 我不需要包含数据变量,否则我总是会更新最后的数据吗?或者是只有 javascript 并且代码在 TS 中可以正常工作
-
如果您使用
var声明一个变量,并且您在非功能块中,那么您所关心的只是一件事。 stackoverflow.com/questions/750486这里不是这样的。 -
这更适合 codereview.stackexchange.com 。 “丑陋”是非常主观的,并没有描述问题或期望的结果。
标签: node.js typescript asynchronous iterable