function ajax(url){ return new Promise(function (resolve, reject) { var xhr=new XMLHttpRequest();//实例化 xhr.open('get',url,true); xhr.send(); //将请求发送到服务器 xhr.onreadystatechange=function(){ if(xhr.readyState===4){ if(xhr.status===200){ resolve(JSON.parse(xhr.responseText)); }else{ reject('error'); } } } }); } (async function () { var ret = await ajax('/users').then(function (data) { return data; }).catch(function (error) { return error; }) console.log(ret); })(); 只要执行了resolve(),那么reject()就不会执行了。其代码的先后顺序,决定了其执行的先后顺序。reject 方法的参数通常是错误。