解决异步的几种实现方式

时间: 2020-03-23阅读: 37标签: 异步

如下代码

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();
站长推荐

1.阿里云: 本站目前使用的是阿里云主机,安全/可靠/稳定。点击领取2000元代金券、了解最新阿里云产品的各种优惠活动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各类产品的最新活动,优惠券领取点击进入

3.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/8367

总结javascript处理异步的方法

javascript语言的执行环境是单线程(single thread),就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。

理解Javascript的异步

Javascript是单线程的编程语言,单线程就是说同一时间只能干一件事。放到编程语言上来说,就是说Javascript引擎(执行Javascript代码的虚拟机)同一时间只能执行一条语句。单线程语言的好处是你只管写不用担心并发问题。

怎样取消 JavaScript 中的异步任务?

有时候执行异步任务可能是很困难的,尤其是在特定的编程语言不允许取消被错误启动或不再需要的操作时。幸运的是 JavaScript 提供了非常方便的功能来中止异步活动。在本文中,你可以学到如何创建可中止的函数。

es6异步解决方案

​由于最初j s官方没有明确的规范,各种第三方库中封装的异步函数中传的回调函数中的参数没有明确的规范, 没有明确各个参数的意义, 不便于使用。但是node中有明确的规范

在现代JavaScript中编写异步任务

在本文中,我们将探讨过去围绕异步执行的JavaScript的演变以及它如何改变我们编写和读取代码的方式。我们将从Web开发的开始,一直到现代异步模式示例

解决异步编程的方法:promise与await

Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API

javascript如何实现异步请求?

JS中通常实现浏览器和服务器的数据交互,那么异步操作是关键的一部分:通常情况下,浏览器想服务器发送请求,服务器相应请求返回数据,浏览器执行异步操作。

node的异步处理是怎么做的呢?

Node.js以其速度而闻名,因为它是非阻塞的。非阻塞意味着一个请求不会等待另一个请求结束(也就是异步的)。异步这一特性使Node.js成为当前吞吐量最大的框架

Js如何处理循环的异步操作

compute.exec()这是个异步方法,在里面处理一些实际业务,这时候打印出来的很可能就是300,300,300(因为异步for循环还没有等异步操作返回Promise对象过来i值已经改变)

async 的异步操作模式

我还记得以前执行异步操作需要在越来越深的回调地狱中使用回调的那些“好日子”。虽然回调地狱并没有完全成为过去,但是使用 Promise 来代替回调的嵌套已经显得简单多了。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广