vue中axios的封装问题

发布于 2022-09-11 15:31:23 字数 1009 浏览 9 评论 0

这是我fresh里面的代码

export function fetch(options) {
    return new Promise((resolve, reject) => {
        const instance = axios.create({
            //所有的请求都会带上这些配置,比如全局都要用的身份信息等。
            headers: {
                'Content-Type': 'application/json',
            },
            timeout: 30 * 1000 // 30秒超时
        });
        instance(options)
            .then(response => {
                Message({
                    message: '恭喜你,这是一条成功消息',
                    type: 'success'
                });
                resolve(response);
            })
            .catch(error => {
                reject(error);
            });
    });
}

这是我index里面的代码

export function test(params) {
    return fetch({
        url: api.test,
        method: 'get',
        params
    })
}

现在我在页面使用的时候只能通过.then()方法来获取到test里面的返回值。有没有办法在页面的时候通过

const res=test();
而不是
test().then(res=>{
    if(res){
    ....
    }
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉城已无爱 2022-09-18 15:31:23
async submit() {
   var result= await api.test()
}
我一直都在从未离去 2022-09-18 15:31:23

首先楼主要明白,你的 fetch 返回的是一个 promise 对象,所以你的 test 方法返回的也是一个 promise 对象。它不是接口返回的数据。因此处理 promise的方法,有两种,一种是 .then(),一种就是 async...await。后一种写法更符合开发人员的同步思维

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文