javascript Promise

Promise对象构造时需要一个参数,这个参数必须是一个函数。

copy
let prom = new Promise(function (resolve, reject) { console.log("Run"); // 进行费时间的异步操作 ... // if(success) { resolve(res_you_want_return) } else { reject(error_msg) } }).then(function(res_i_want_to_get_when_success){ console.log('OK') console.log(res_i_want_to_get_when_success) // 这里的 res_i_want_to_get_when_success 就是 res_you_want_return }).catch(function(error_msg){ console.error(error_msg) // 这里的error_msg就是上面的error_msg });

当一个Promise对象被构造时,立即 在另外的线程中异步执行传入构造函数的函数。

在执行的同时,then方法也被执行,then的作用是在“成功回调列表”中添加一个函数,catch则是在“失败回调列表”中添加一个回调函数。添加回调函数并不意味着要执行回调函数,所以then/catch方法是即时结束的,不会阻塞主线程。等到resolve或者reject被执行后,再依次执行回调列表中的函数。

如何获取promise resolve后的原始数据?

promise resolve后会返回一个Promise对象,这个对象包含了原始数据,但是如何获取原始数据类型呢?

对于网络请求,再json()方法返回后,多用一次then方法即可:

copy
function djc(params) { js = params.json() js.then( pa => console.log(typeof pa) ) } fetch("https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?room_id=22575741&protocol=0,1&format=0,1,2&codec=0,1&qn=10000&platform=web&ptype=8&dolby=5&panorama=1", { "referrer": "https://live.bilibili.com/22575741", "referrerPolicy": "no-referrer-when-downgrade", "body": null, "method": "GET", "mode": "cors", "credentials": "include" }).then(djc);

参见:https://blog.csdn.net/M_H5211/article/details/116160429

另外,同一个promise多次then,下一次用上一次的return值,不会被Promise包装,但是第一个then,收到的会是包含结果的Promise对象(因为是被resolve出来的)

posted @   王冰冰  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起