gpt4 book ai didi

用于处理已完成 promise 的 Javascript 模式

转载 作者:行者123 更新时间:2023-11-30 09:31:17 24 4
gpt4 key购买 nike

我时常遇到这个:

return somethingThatReturnsAPromise()
.then((response) => {
soSomethingg(); // Eg; update the UI
return response;
});

现在我正在寻找一些不会返回任何东西并且如果我忘记了也不会改变 promise 链的东西:

return somethingThatReturnsAPromise()
.whatImLookingFor((response) => {
doSomething(); // Eg; update the UI
})
.then((response) => {
// and this one should still be able to access response
});

也许这违背了 promises 的理念,但对我来说,这有点不方便,因为我不能传递任意函数。

一个想法是组合一个函数:

const sideEffect = (callback) => {
return (response) => {
callback(response);
return response;
};
};

我可以把它当作

return somethingThatReturnsAPromise()
.then(sideEffect(doSomething));

但是我更喜欢一些东西而不是那么有没有类似的东西?

注意:我正在使用 Angular 1.x,所以我需要类似的东西。

最佳答案

我会假设你并不是真的在写 .then().then(),因为你可以将它折叠成一个 .then,但是你的真正关心的是返回 promise 并让一些外部代码将另一个 then 添加到链中。在这种情况下,请执行以下操作:

let p = somethingThatReturnsAPromise();
p.then(() => doSomething());
return p;

这允许调用者将额外的 then 附加到原始 promise ,而不是链接您的 .then,从而接收原始 promise 的值。这称为分支 promise 链。

关于用于处理已完成 promise 的 Javascript 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46053912/

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