例:求和,异步请求;
function sum(a,b) {
//异步请求
setTimeout(()=>{
return a+b;
},2000);
}
var result=sum(1,2);
console.log(result);
结果返回值为 :
解决方案:
1.使用callback回调函数
function sum(a,b,callback) {
setTimeout(()=>{
let result=a+b;
callback(result);
},2000);
}
//定义回调函数
function callback(result) {
console.log(result);
}
sum(1,2,callback)
返回值结果为:
使用callback回调函数能够解决异步请求,但是由于函数嵌套,会造成回调地狱。
2. 使用Promise
//异步请求解决方案: Promise
function sum(a, b) {
return new Promise((resolve, reject) => {
setTimeout(() => {
let result = a + b;
resolve(result)
}, 2000);
});
}
sum(1, 2)
.then((result) => {
console.log("promise", result);
})
.catch((err) => {
console.log(err);
});
返回值结果为:
总结:解决react异步请求可以使用 callback 回调函数及 Promise 对象封装的方法,即可得到请求的返回值;进阶 方法详见主页下一篇文章《 Web react异步请求解决方案(二)》。