fetch 可以同步请求数据吗?

fetch(userLoginUrl, {

            method: 'POST',
            headers: {
                'Content-Type': 'application/json;charset=UTF-8'
            },
            body: JSON.stringify(userObj),
        }).then(function (res) {
            if (res.ok) {
                res.json().then(function (data) {
                    //console.log(data);
                    if (data.code == 0) {
                        dataTest = data;
                        dataBu = true;
                        applyFn(data);
                        //上面成功后再次出一个请求 ????
                    }

                });
            }
        }).catch(function (err) {
            // console.log(err)
        });
        
阅读 25.1k
3 个回答
fetch(userLoginUrl, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json;charset=UTF-8'
    },
    body: JSON.stringify(userObj),
}).then(function (res) {
    if (res.ok) {
        // return
        return res.json().then(function (data) {
            //console.log(data);
            if (data.code == 0) {
                dataTest = data;
                dataBu = true;
                applyFn(data);
                return fetch(url) // 第二个请求
            }

        });
    }
}).then(function(res){
console.log('第二请求')
}).catch(function (err) {
    // console.log(err)
});

fetch同步请求似乎好像没有,虽然文档中有提到一个synchronous-flag,但是调用参数里面没有提供这个配置项。
不是很明白你需要做什么。如果你是要在userLoginUrl的请求成功后再发送另外一个请求,那么你注释的地方再调用个请求就行了。本来在then就是在请求成功后才会调用的。

ES7的话,可以用async/await用同步的思维写异步的代码。

async function fn() {
    let res_1 = fetch(url_1);
    let res_2 = fetch(url_2, res_1);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏