promise对象调试
2024-10-19 04:31:20
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
const p1 = new Promise(function (resolve, reject) {
setTimeout(() => resolve("test"), 2000)
}) const p2 = new Promise(function (resolve, reject) {
//经过调试发现,resolve的内容和状态能被传入的promise实例覆盖,如果是reject则不能被覆盖。
setTimeout(() => reject(p1), 3000)
}) console.log(p1);
console.log(p2);
p2
.then(function(result) {
console.log(result);
return "chenyujie";})
.catch(function(error ) {
console.log("testsss");
console.log(error);
return p2;})
.then(function(result) {
console.log(result);
console.log(this);},
function(error){
console.log("zhongguo");
console.log(error);
})
// .catch(result => {
// console.log(result);
// })
</script>
</body>
</html>
then函数返回一个promise对象,promise对象有两个基本属性,状态和结果,其中then回调函数的返回值如果是字符串则直接为结果,状态为fulfilled,如果返回值为promise对象,则以对象状态和结果为准。(具体情况可以调试看,不一定准确,该对象有点麻烦)
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; const getJSON = function(url) {
const promise = new Promise(function(resolve, reject){
const handler = function() {
if (this.readyState !== 4) {
return;
}
// console.log(this);
if (this.status === 200) {
console.log(this.responseType)
resolve(this.responseType);
} else {
console.log(this.status)
console.log("-------------"+this.statusText+"----------------")
reject(new Error(this.statusText));
}
};
const client = new XMLHttpRequest();
//client.open("GET", url, false); //第三个参数设置为false,使得函数执行为同步操作
client.open("GET", url);
client.onreadystatechange = handler;
client.responseType = "html";
client.setRequestHeader("Accept", "text/html");
console.log("test1")
client.send();
console.log("test2") }); return promise;
}; //getJSON("https://www.baidu.com/wang") getJSON("https://www.baidu.com/wang").then(function(json) {
console.log('Contents: ' + json);
}, function(error) {
console.log('出错了', error);
});
最新文章
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- LSD-SLAM深入学习(2)-算法解析
- redis系列-redis的连接
- VS2015 Xamarin for iOS
- guava学习--FluentIterable
- POJ1155 TELE(树形DP)
- 在DNS管理器——用局域网IP指定你所起的域名名称
- 移植mysql到嵌入式ARM平台
- linux下多线程踩过的坑(不定更新)
- iOS播放短的音效
- 关于Build Active Architecture Only属性
- python web开发之django
- (转载) Java子类与父类之间的对象转换
- hdu 6095 Rikka with Competition---思维题贪心
- duilib窗口从任务栏恢复问题
- day051 Django创建
- HUABASE :基于列存储的关系型数据库系统
- [转帖] Linux 创建一个简单的私有CA、发证、吊销证书
- JS怎么把字符串数组转换成整型数组
- 【北京】安全研究员/工程师-20-35K,人体工程学座椅坐等你来~
热门文章
- Vue+axios的四种异步请求,参数的携带以及接收
- 【LeetCode】203.移除链表元素
- ajax请求对返回数据data的处理
- 微信小程序云开发-云存储的应用-识别营业执照
- 分享一个自己画div的技巧
- CSP-S 2020
- onclick=";return doAlert()"; onclick=";return false";
- TensorFlow模型部署到服务器---TensorFlow2.0
- 手脱UPX壳的方法
- GooseFS助力大数据业务数倍提升计算能力