gpt4 book ai didi

javascript - 在 promise 链上返回空箭头函数

转载 作者:行者123 更新时间:2023-12-03 00:09:04 27 4
gpt4 key购买 nike

我试图理解这里的一段代码,我认为这是多余的代码,可以删除它,但也许我错了,这里是代码:

return(
myModule.getSomething(args.url)
.then(stream => module.uploadData({
param1: args.param1,
param2: args.param2,
param3: stream,
}))
.then(() => myBroker.dispatch({
queueUrl: myQueueUrl,
payload: JSON.stringify(args.payload),
})
)
.then(msgInfo => {}) . //This line can be removed right?
.catch(error => {
myBroker.dispatch({
queueUrl: anotherQueueUrl,
payload: JSON.stringify({ type: 'error', payload: `[ERROR] ${error}` }),
});

throw error;
})
);

我相信这句话:

.then(msgInfo => {})

可以删除吧?箭头函数不执行任何操作,msgInfo 是前面的 then 子句在调用 myBroker.dispatch 之后返回的内容,因此,我可以删除我提到的行,对吗?

有人可以给我一个明确的解释吗?为什么这条线存在?或者解释一下为什么我不能删除它?

PS:函数 getSomething 和 uploadData 返回一个 promise ,调度函数我不太确定,因为它看起来像这样:

return(
client.sendMessage(parameters).promise()
.then(data => data)
);

它只返回一个“数据”对象,对吧?或者它也返回一个 Promise,因为它最后包含 then 子句?

这种使用多个“then”和箭头函数的语法表示法让我感到困惑,

提前非常感谢!

最佳答案

我能想到的该行存在的唯一原因是,如果使用整个 block 的函数位于 myBroker.dispatch 的解析值不应该是(或者最好不要)暴露给更大功能的消费者。例如:

const thisModule = (() => {
const myBroker = ...;
function getSomethingAndDispatchBroker() {
return(
myModule.getSomething(args.url)
.then(stream => module.uploadData({
param1: args.param1,
param2: args.param2,
param3: stream,
}))
.then(() => myBroker.dispatch({
queueUrl: myQueueUrl,
payload: JSON.stringify(args.payload),
}))
.then(msgInfo => {})
.catch(error => {
myBroker.dispatch({
queueUrl: anotherQueueUrl,
payload: JSON.stringify({ type: 'error', payload: `[ERROR] ${error}` }),
});
throw error;
})
);
}
return { getSomethingAndDispatchBroker };
})();

这里,函数getSomethingAndDispatchBroker可以从外部调用,但也许myBroker.dispatch的解析值最好保留在thisModule内部> - 要么是出于隐私考虑,要么是因为代码清晰 - 也许您只想让函数的用户知道 Promise 是否已解决(如果过程成功),而不告诉他们不必要的细节。

不过,如果这些都不是问题,那么可以,随意删除 .then(msgInfo => {}) 行。

关于javascript - 在 promise 链上返回空箭头函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54823326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com