1、处理原生Ajax
<script>
function queryData(url) {
var p = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) {
return;
}
if (xhr.readyState == 4 && xhr.status == 200) {
resolve(xhr.responseText);
} else {
reject(‘服务器错误‘);
}
};
xhr.open(‘get‘, url);
xhr.send();
});
return p;
}
queryData(‘http://localhost:3000/data‘)
.then(function(data) {
console.log(data);
return queryData(‘http://localhost:3000/data1‘);
})
.then(function(data) {
console.log(data);
return queryData(‘http://localhost:3000/data2‘);
})
.then(function(data) {
console.log(data);
})
</script>
2、then参数中的函数返回值
(1)返回Promise实例对象:该返回实例会调用下一个then
queryData(‘http://localhost:3000/data‘)
.then(function(data) {
return queryData(‘http://localhost:3000/data1‘);
})
.then(function(data) {
return new Promise(function(resolve, reject) {
resolve(‘我是Promise实例‘);
})
})
.then(function(data) {
console.log(data); // 我是Promise对象
})
(2)返回普通值:返回的普通值会传递给下一个then,通过then参数中函数的参数接受该值
queryData(‘http://localhost:3000/data‘)
.then(function(data) {
return queryData(‘http://localhost:3000/data1‘);
})
.then(function(data) {
return ‘我是普通值‘; // 会内部生成一个Promise对象
})
.then(function(data) {
console.log(data); // 我是普通值
})
原文:https://www.cnblogs.com/Alisa-k/p/12672589.html