gpt4 book ai didi

javascript - 日志记录时避免 Promise 构造函数反模式

转载 作者:行者123 更新时间:2023-11-30 08:32:14 32 4
gpt4 key购买 nike

我正在看这个问题,答案很有意义

What is the explicit promise construction antipattern and how do I avoid it?

但是,如果您只想在函数中简单地放置一条日志消息或一些简单的东西,有没有办法避免必须像这样创建一个新的 promise

function getStuffDone(param) {
return new Promise(function(resolve, reject) {
// using a promise constructor
myPromiseFn(param+1)
.then(function(val) {
console.log("getStuffDone executing");
resolve(val);
}).catch(function(err) {
console.log("getStuffDone error");
reject(err);
});
});
}

如果在这个位置运行 promise 之前您还想要一条日志消息怎么办?这会使事情变得更加困难吗?

function getStuffDone(param) {
return new Promise(function(resolve, reject) {
// using a promise constructor
console.log("getStuffDone starting");
myPromiseFn(param+1)
.then(function(val) {
console.log("getStuffDone executing");
resolve(val);
}).catch(function(err) {
console.log("getStuffDone error");
reject(err);
});
});
}

最佳答案

只需在您的日志回调中返回或重新抛出原始值,then() 就会返回同样的 promise 。

promise 的全部意义在于它们很容易像那样链接起来。

return myPromiseFn(param+1)
.then(function(val) {
console.log("getStuffDone executing");
return val;
}).catch(function(err) {
console.log("getStuffDone error");
throw err;
});

关于javascript - 日志记录时避免 Promise 构造函数反模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35945546/

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