89 lines
3.1 KiB
HTML
89 lines
3.1 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Document</title>
|
||
</head>
|
||
|
||
<body>
|
||
<script>
|
||
// asnyc函数:声明方式在函数前面添加async关键字即可
|
||
// async function fn(){
|
||
// // 1、只要返回的结果不是一个Promise对象,则返回的结果都是一个成功的Promise对象
|
||
// // 返回一个字符串
|
||
// // return 'string';
|
||
|
||
// // 2、如果抛出错误,返回的结果是一个失败状态的Promise
|
||
// // throw new Error('error')
|
||
|
||
// // 3.返回的结果是一个Promise对象,则返回值的Promise对象的状态与其一致
|
||
// return new Promise((resolve,reject)=>{
|
||
// // resolve('成功的数据');
|
||
// reject('失败了!');
|
||
// })
|
||
// }
|
||
// const result = fn()
|
||
// console.log(result);
|
||
|
||
// const p = new Promise((resolve,reject)=>{
|
||
// // resolve('successful');
|
||
// reject('error');
|
||
// });
|
||
// //await 要放在asnyc 函数里面
|
||
// async function fn(){
|
||
// try{
|
||
// //await表达式右侧是一个Promise对象,返回值为promise对象的值
|
||
// let result = await p;
|
||
// console.log(result);
|
||
// }catch(e){
|
||
// console.log(e)
|
||
// }
|
||
|
||
// }
|
||
// fn()
|
||
|
||
//存在跨域问题
|
||
// readyState:存有服务器响应的状态信息。
|
||
// 0: 请求未初始化
|
||
// 1: 服务器连接已建立
|
||
// 2: 请求已接收
|
||
// 3: 请求处理中
|
||
// 4: 请求已完成,且响应已就绪
|
||
// responseText:获得字符串形式的响应数据。
|
||
function sendAjax(url) {
|
||
return new Promise((resolve, reject) => {
|
||
const xhr = new XMLHttpRequest()
|
||
xhr.open("GET", url);
|
||
xhr.send();
|
||
xhr.onreadystatechange = function () {
|
||
if (xhr.readyState == 4) {
|
||
if (xhr.status >= 200 && xhr.status < 300) {
|
||
resolve(xhr.response);
|
||
}else{
|
||
// xhr.statusText是浏览器的错误信息,因为跨浏览器的时候,可能不太一致,不建议直接使用它
|
||
reject("数据返回失败!状态码" + xhr.status + "状态信息:" + xhr.statusText);
|
||
}
|
||
}
|
||
}
|
||
})
|
||
}
|
||
// 使用 promise的then方法
|
||
// sendAjax('./data/test.geojson').then(value=>{
|
||
// console.log(value);
|
||
// },reason=>{
|
||
// console.log(reason);
|
||
// })
|
||
|
||
// 使用async和await表达式
|
||
async function main(){
|
||
let result = await sendAjax('./data/jsonString.txt');
|
||
console.log(result)
|
||
}
|
||
main()
|
||
</script>
|
||
</body>
|
||
|
||
</html> |