网站建设部分费用会计科目,做街舞网站的素材,网站建设多少钱宋柯,网站关键词数量减少需求分析 使用回调方式的异步方法时#xff0c;需要返回异步操作的结果#xff0c;这个时候就不能直接在回调函数内返回值#xff0c;因为回调函数需要等待异步操作结束才执行#xff0c;而同步调用返回值时#xff0c;异步操作没有结束#xff0c;回调函数就没有执行完成…需求分析 使用回调方式的异步方法时需要返回异步操作的结果这个时候就不能直接在回调函数内返回值因为回调函数需要等待异步操作结束才执行而同步调用返回值时异步操作没有结束回调函数就没有执行完成就接收不到返回值 // 一个异步回调的方法const getData () {let data null;fetch(https://api.github.com/emojis).then(res {if (res.ok) {res.json().then(response {console.log(response);data response;});}})return data;
}console.log(getData()); // 输出 null
这个函数的思路是在异步请求的外层定义一个变量然后执行异步请求的回调异步请求成功后执行回调将结果赋值个data然后将data返回出来 但是显然调用getData时是同步的而请求回调是异步的结果是先调用了getData请求回调的操作才结束data根本没有得到请求返回的值
解决方法
一般来说采用回调的方式回调的结果应该在回调函数内部处理要返回异步函数的值就应该等待异步函数执行结束在返回可以将其封装成promise进行处理 const getData async () {const res await fetch(https://api.github.com/emojis);const data await res.json();console.log(data);return data;
}getData().then(data {console.log(data);
})
使用asyncawait将结果封装成一个promise在使用promise的异步方法读取结果 这样就将异步的结果通过getData方法拿出来了
总结
要拿到一个异步的结果就需要使用异步的调用同步的方法是不能获取异步结果的因为异步方法总是在同步操作之后执行
完整代码展示 // 一个异步回调的方法// const getData () {
// let data null;
// fetch(https://api.github.com/emojis).then(res {
// if (res.ok) {
// res.json().then(response {
// console.log(response);
// data response;
// });
// }
// })
// return data;
// }// console.log(getData()); // 输出 nullconst getData async () {const res await fetch(https://api.github.com/emojis);const data await res.json();console.log(data);return data;
}getData().then(data {console.log(data);
})