JavaScript封装异步函数 —— 【异步编程】 —— 如何获取一个函数中异步操作的结果?

       我们在写项目的时候有没有遇到这样的一个情况:一个函数里,嵌套着另一个异步函数,那如何在外面获取这个异步函数的结果呢?(return值)
       就比如这样一个例子:

function fn() {
    
    
	setTimeout(function(){
    
    
		let data = 222
	},2000)
}

我们如何获取定时器中data的值呢?


方法一 传入回调函数

function fn(callback) {
    
    
	setTimeout(function(){
    
    
		let data = 222
		callback(data)
	},2000)
}

fn(function(data){
    
    
	console.log(data)	//	222
})

我们巧妙地在fn里传入一个回调函数,在定时器函数中调用这个回调函数,并把定时器函数中的结果通过函数传参的形式带出来,这样我们就可以通过fn的回调获取到结果了!
其实,这样的操作也被称为 —— 封装异步API(封装异步函数)
我们通过fn函数,将定时器异步函数进行封装。

方法二 Promise

function fn() {
    
    
	return new Promise(function (resolve, reject) {
    
    
            	setTimeout(function () {
    
    
                	let data = 222
                	resolve(data)
            	}, 2000)
        	})
}
    
fn().then(function(data) {
    
    
	console.log(data)
})

用Promise将异步函数进行包裹,在调用fn时会返回一个Promise实例,调用Promise实例的then函数,我们就可以拿到成功的回调值。

猜你喜欢

转载自blog.csdn.net/weixin_60297362/article/details/123129825