axios怎么在调用一个接口后紧接着掉第二个接口?

发布于 2022-09-05 02:31:36 字数 211 浏览 14 评论 0

1.我现在想调用一个接口后,紧接着用第一个接口的值调用第二个接口,正确的写法是这样的吗?

图片描述

2.连着写then,最后的catch是取谁的?

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

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

发布评论

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

评论(6

删除→记忆 2022-09-12 02:31:36

async/await吧,解决嵌套回调调用,更优雅一点。

━╋う一瞬間旳綻放 2022-09-12 02:31:36

写是可以这么写。但是返回的顺序还是不一定的。并不能保证第二个then的回调就一定第一个then之后返回。

所以呢,如果你一定要保证在拿到第一个then的返回后再去发送第二次请求,在现有技术的条件下可以这样

axios.get('url')
.then(res => {
    // todo
    axios.get('url2').then()
})

你要觉得这样写难看,可以自己封装下嘛,大致是这样

function axiosGet(url, param, cb) {
    if (typeof param === 'function') {
        cb = param
        param = ''
    }
    axios.get(url + param).then(res => {
        if (cb) { cb(res) }
    })
}

axiosGet('url1', function(res) {
    // todo
    axiosGet('url2', function(res) {
        // todo
    })
})
无戏配角 2022-09-12 02:31:36
axios.get(url1).then(rsp => {
    //...
    return axios.get(url2)
}).then(rsp => {
    //...
    return axios.get(url3)
})
夏日浅笑〃 2022-09-12 02:31:36

正确不正确你一试便知,另外只要有其中一个报错就会catch到,不针对其中某一个

物价感观 2022-09-12 02:31:36

你可以使用async做流程控制

# 安装方式
npm install async --save

题主的问题适合用:waterfall(tasks, [callback])

waterfall方法用于依次执行多个方法,一个方法执行完毕后才会进入下一方法,waterfall的多个方法只能以数组形式传入,不支持object对象。前一个函数的输出做为下一个函数的输入参数

代码示例

async.waterfall([
    function(callback) {
        callback(null, 1);
    },
    function(arg1, callback) {
        console.log(arg1); // 1
        callback(null, 2);
    }
], function (err, result) {
    // 执行的任务中方法回调err参数时,将被传递至本方法的err参数
    // 参数result为最后一个方法的回调结果'done'
    console.log(result) // 2
});
妄司 2022-09-12 02:31:36

以上给出的方法都很丰富了,我再补充一个个人习惯使用的方法吧,那就是使用 Promise.all,实例如下:

Promise.all([
    axios.get(url1),
    axios.get(url2)
]).then(res => {})
.catch(err => {});

这样其中任何一个请求出错,catch就会执行。

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