【发布时间】:2021-03-15 22:59:13
【问题描述】:
在 Vue 项目中,有一段代码在多个文件中重复出现,我试图将其重构为辅助函数,以便需要它的文件共享。所述代码块的目的是根据 API 承诺的结果在 UI 中显示祝酒词。问题是,在显示 toast 之后,不同的文件必须执行特定于该文件的操作。例如,一个文件必须刷新数据,而另一个文件必须关闭模式表单。这意味着在调用后续命令之前等待显示 toast 的公共代码完成。这就是我卡住的地方。
这个简化的代码在更大的项目中复制了这个问题:
// simulate an API promise
const aPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('promise resolved at ' + new Date().toLocaleString());
}, 2000);
});
// get simulated API promise
const response = aPromise;
// --- this works ---
const generateResponseFeedback = response
.then((msg) => {console.log(msg)})
.then(() => {console.log('second message ' + new Date().toLocaleString())});
const response2 = generateResponseFeedback.then(() => { console.log('last message abc ' + new Date().toLocaleString())});
// --- this does not work ---
const sharedGenerateResponseFeedback = (response) => {
response.then((msg) => {console.log(msg)})
.then(() => {console.log('second message ' + new Date().toLocaleString())});
}
sharedGenerateResponseFeedback(response).then(() => { console.log('last message xyz ' + new Date().toLocaleString())});
我不明白为什么它说sharedGenerateResponseFeedback(...) 未定义。为什么它不能识别那个函数名?
【问题讨论】:
标签: javascript promise