const productIds = ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', ...]
const generateBearerToken = async () => {
await //api calling
} // will return bearerToken
const getSubmissions = async () => {
await // api calling
}
let sellerId = null
const getPublisherId = async (productId) => {
//generating bearer token using generateBearerToken()
await GenerateBearerToken()
//calling API here and setting the value of sellerId
const response = await axios.get(url, { header })
//From this response, I am setting the value of sellerId, then calling getSubmission()
sellerId = response.data.sellerId
await getSubmission()
}
productsIds.map((productId) => {
await getPublisherId(productId)
})
从getPublisherId
得到的sellerId
,我在调用getSubmissions
时在头中使用该值。(sellerId
)对于不同的产品ID是不同的。但是当我调用上面的map函数时,一个函数的sellerId
被传递到另一个调用getSubmissions
的函数中,不应该是这样。sellerId
应该只传递给那个特定的getSubmissions
。如何避免这种冲突?
2条答案
按热度按时间0h4hbjxa1#
这不应该是全球性的:
每个异步操作都在修改该值,任何其他操作都将使用 * 当时 * 的值,而不是调用该操作时 * 的值。
不要使用全局变量将值从一个函数传递到另一个函数,只需将值传递到函数即可:
以及:
顺便说一句,代码 * 建议 * 您在其他地方犯了同样的错误,同样的事情可能需要在其他地方纠正。
41ik7eoe2#
您至少需要:
但是,您可能希望查找Promise.allSettled和其他内容,以避免每个发布者按顺序一次获取一个。