gpt4 book ai didi

javascript - 在 promise 解决后按文件执行独特的操作

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

在一个 Vue 项目中,有一段代码在多个文件中重复出现,我试图将其重构为一个辅助函数,以便它可以被需要它的文件共享。所述代码块的目的是根据 API promise 的结果在 UI 中显示 toast 。要注意的是,在显示 toast 之后,不同的文件必须执行特定于该文件的操作。例如,一个文件必须刷新数据,而另一个文件必须关闭模式窗体。这意味着在调用后续命令之前等待显示 toasts 的公共(public)代码完成。这就是我被困的地方。

这个简化的代码在更大的项目中复制了这个问题:

// 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())});

控制台显示如下-
enter image description here

我不明白为什么说 sharedGenerateResponseFeedback(...) 未定义。为什么它不能识别该函数名称?

最佳答案

您需要在 sharedGenerateResponseFeedback 中返回 promise 。

const sharedGenerateResponseFeedback = (response) => {
return response.then((msg) => {console.log(msg)})
.then(() => {console.log('second message ' + new Date().toLocaleString())});
}

关于javascript - 在 promise 解决后按文件执行独特的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66646835/

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