var getJson = function (url) { var promise = new Promise(function (resolve,reject) { let client = new XMLHttpRequest(); client.open("GET",url); client.onreadstatechenge = handler; client.responeType ="json"; client.setRequestHeader("Accept","application/json") client.send(); function handler() { if(this.readyState !==4) return; if(this.status === 200) { resolve(this.response); } else { reject(new Error(this.statusText)); } } });
} getJson("test.json") .then(json => console.log(json)) .catch(error => console.log(error));return promise;
//async函数返回一个 Promise 对象。 //async函数内部return语句返回的值,会成为then方法回调函数的参数。 async function f() { return 'hello world'; } f().then(v => console.log(v)) // "hello world" //上面代码中,函数f内部return命令返回的值,会被then方法回调函数接收到。 //async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到。 async function f() { throw new Error('出错了'); } f().then( v => console.log(v), e => console.log(e) ) // Error: 出错了
//async函数返回的 Promise 对象,必须等到内部所有await命令后面的 Promise 对象执行完,才会发生状态改变,除非遇到return语句或者抛出错误。也就是说,只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数。
promise 和async await
最新推荐文章于 2022-06-30 15:19:50 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)