【发布时间】:2021-06-21 16:45:38
【问题描述】:
我正在尝试在 .then() 方法运行后立即运行一个操作并返回一个 object。为简单起见,假设我有这段代码 sn-p:
const functionToRunAfterWards = () => { // does stuff };
module.exports = {
someFunction: ({ someParam }) => {
return anotherFunction.then((someValue) => {
// do a bunch of stuff
return someStuff
})
},
};
上面的代码 sn-p 有效,但我想在then() 返回someStuff 之后运行function。我尝试在someFunction 之外运行functionToRunAfterWards 函数,但它显示code cannot be accessed。我还尝试添加另一个.then(),但它不起作用......就像这样:
const functionToRunAfterWards = () => { // does stuff };
module.exports = {
someFunction: ({ someParam }) => {
return anotherFunction.then((someValue) => {
// do a bunch of stuff
return someStuff
}).then(functionToRunAfterWards());
},
};
你知道如何做到这一点吗?
【问题讨论】:
-
当你传递给
.then()时不要调用你的函数:.then(functionToRunAfterWards); -
... 并且可能给它一个参数,否则
someStuff的内容将不可见。 -
补充@NickParsons 所说的:通过在
then(functionToRunAfterwards())中调用您的函数,您将函数的返回值 传递给then,而不是函数本身。 -
你可以做类似
then(()=>{functionToRunAfterWards()}) -
.then(fn1)将返回一个新的承诺,它可以再次被链式.then(fn2)处理,例如:myPromise.then(fn1).then(fn2)。提供一个函数 fn1 很重要,它需要一个参数(数据,即:someStuff),当然,如果你想用 fn2 处理它,你需要return该函数中的数据跟随.then(fn2)(fn2 也必须期待一个参数!)。
标签: javascript node.js arrays object promise