打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
解决异步的几种实现方式

如下代码

const request = function(){
let num = Math.round(Math.random()*100)/100;
console.log(num);
    setTimeout(function(){
    if(num < 0.5){
    return('1234567');
    }else{
    return('abcdefg');
    }
},500)
}
console.log(request())
//输出:0.31
//      undefined

setTimeout为异步函数,所以第二个返回值就打印为了undefined,因为不会等待计时器函数执行完成再执行外层的console.log(request())。

1、promise then

//解决方法一:promise then
const request = function(){
var _this = this;
let num = Math.round(Math.random()*100)/100;
console.log( num );
return new Promise( (resolve, reject) => {
setTimeout(function(){
num < 0.5 ? resolve('1234567') : reject('abcdefg');
}, 500);
});
}

request().then( val => {
console.log( val );
}).catch( err => {
console.log( err );
});

2、回调函数

const request = function(cb){
let num = Math.round(Math.random()*100)/100;
console.log(num);
    setTimeout(function(){
num < 0.5 ? cb('1234567') : cb('abcdefg');
},500)
}

var result = request(function(res){
console.log(res);
})

3、async await

const request = async function(){
let num = Math.round(Math.random()*100)/100;
console.log(num);
    const result = await aa(num);
}

function aa(num){
setTimeout(function(){
console.log(num < 0.5 ? '1234567' : 'abcdefg');
},500)
}

request();
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
异步编程之Promise
七天学会NodeJS(六)
告诉你什么是javascript的回调函数
js轮询及踩过的坑
理解 JavaScript 的 async/await
带你聊聊JavaScript中的回调函数,区分下同步和异步回调
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服