(一)promise构造函数
<script type="text/javascript">
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('foo')
},300)
})
myPromise
.then((value) => {
console.log(value,'value')
})
.catch((err) => {
console.log(err)
})
console.log(myPromise,'myPromise')
</script>
(二)将基于回调的 API 转换为基于 Promise 的 API
function myAsyncFunction(url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('GET',url);
xhr.onload=() => resolve(xhr.responseText);
xhr.onerror=() => reject(xhr.statusText);
xhr.send();
})
}
(三)Promise.all()
Promise.all()
静态方法接受一个 Promise 可迭代对象作为输入,并返回一个 Promise。当所有输入的 Promise 都被兑现时,返回的 Promise 也将被兑现(即使传入的是一个空的可迭代对象),并返回一个包含所有兑现值的数组。如果输入的任何 Promise 被拒绝,则返回的 Promise 将被拒绝,并带有第一个被拒绝的原因。
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo')
});
Promise.all([promise1,promise2,promise3]).then((value) => {
console.log(value)
})