码迷,mamicode.com
首页 > 其他好文 > 详细

解决异步的几种实现方式

时间:2020-09-23 23:23:45      阅读:46      评论:0      收藏:0      [点我收藏+]

标签:number   set   random   网站   string   实现   out   方法   eject   

如下代码

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())。

豌豆资源搜索网站https://55wd.com 电脑刺绣绣花厂 ttp://www.szhdn.com

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();

解决异步的几种实现方式

标签:number   set   random   网站   string   实现   out   方法   eject   

原文地址:https://www.cnblogs.com/Qooo/p/13700385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!