TOOLS_JS异步调用的同步处理

js异步调用转同步

js 复制代码
// 执行两个嵌套的异步请求
function test() {
    let promise_a = fetch('https://www.baidu.com/')

    promise_a.then(res_a => {
        res_a = "https://www.baidu.com/"
        let promise_b = fetch(res_a)
        promise_b.then(res_b => {
            console.log("res_b = ", res_b)
        }).catch(err => {
            console.log("promise_b err=>", err);
        })

    }).catch(err => {
        console.log("promise_a err=>", err);
    })

}

test()

// *******************************************
// 将这两个嵌套的异步请求修改为同步的处理
function test_async() {
    return new Promise(function(resolve, reject) {
        let promise_a = fetch('https://www.baidu.com/')

        promise_a.then(res_a => {
            res_a = "https://www.baidu.com/"
            let promise_b = fetch(res_a)
            promise_b.then(res_b => {
                resolve(res_b)
            }).catch(err => {
                // console.log("promise_b err=>", err);
                reject(err)
            })

        }).catch(err => {
            // console.log("promise_a err=>", err);
            reject(err)
        })

    })
}

// 将异步请求用一个promise包裹 然后放到一个异步函数中
async function test() {
    // console.log('test开始...');
    var value1 = await test_async();
    // console.log("value1 = ", value1);
    return value1;
}

// 调用时使用await阻塞即可
let res = await test()
console.log("res = ", res)
相关推荐
Hilaku1 分钟前
深入WeakMap和WeakSet:管理数据和防止内存泄漏
前端·javascript·性能优化
Juchecar4 分钟前
常见的 HTML 标签及 CSS 选择器速查表
前端
前端程序猿i17 分钟前
用本地代理 + ZIP 打包 + Excel 命名,优雅批量下载跨域 PDF
前端·javascript·vue.js·html
Danny_FD26 分钟前
Vue2 中使用vue-markdown实现编辑器
前端·javascript·vue.js
用户游民26 分钟前
Flutter 项目热更新加载 libapp.so 文件
前端
coding随想26 分钟前
Vue和React对DOM事件流的处理方法解析
前端
用户479492835691527 分钟前
字节面试官:forEach 为什么不能被中断?
前端·javascript
ccnocare28 分钟前
window.electronAPI.send、on 和 once
前端·electron
tager33 分钟前
🍪 让你从此告别“Cookie去哪儿了?”
前端·javascript·后端
阿吉被迫了解低代码38 分钟前
前端:“学算法?狗都不... !”
前端