gpt4 book ai didi

javascript - 在给定方法内的所有 promise 都已解决后执行方法

转载 作者:搜寻专家 更新时间:2023-10-30 22:54:27 24 4
gpt4 key购买 nike

在 Vue.js 组件中,我有一些使用 axios 的方法调用 API。

在不同的情况下,一旦此方法中的调用已解析,我需要执行一些代码,但我不想在 .then( ) 链接到 axios 调用。

methods: {
callApi() {
axios.get('/api')
.then(() => {
// call has resolved, request is done
})
},
firstMethod() {
this.callApi()
// Need to wait for the call to resolve
// Do something
},
secondMethod() {
this.callApi()
// Need to wait for the call to resolve
// Do something else
}
}

如您所见,firstMethodsecondMethod 都依赖于 callApi,但一旦请求完成,它们应该做不同的事情。我更喜欢将此逻辑拆分为不同的函数,而不是在 callApi 方法中使用条件。有没有办法做到这一点,而不必在callApi ?

最佳答案

callApi 返回 promise 链,然后在 firstMethodsecondMethod 中使用并返回它。

methods: {
callApi() {
return axios.get('/api')
.then(() => {
// call has resolved, request is done
})
},
firstMethod() {
return this.callApi()
.then(() => {
// Need to wait for the call to resolve
// Do something
})
},
secondMethod() {
return this.callApi()
.then(() => {
// Need to wait for the call to resolve
// Do something else
})
}
}

无论调用 callApifirstMethod 还是 secondMethod 都应该检查失败并处理/报告它。


您的原始代码违反了 promise 规则之一:该函数应始终返回链或处理拒绝。 (是的,那是 [99.9% 的时间],而不是。)

关于javascript - 在给定方法内的所有 promise 都已解决后执行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56363719/

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