jquery参数传递-如何在Javascript中按顺序进行多个异步执行

2023-08-29 0 6,643 百度已收录

直接调用异步调用异步

function fn1() {
	setTimeout(() => {
		console.log('fn1执行')
		fn2('fn1传递过去的参数')
	}, 1000)
}
function fn2(data) {
	setTimeout(() => {
		console.log('fn2执行', data)
		fn3('fn2传递过去的参数')
	}, 1000)
}
function fn3(data) {
	setTimeout(() => {
		console.log('fn3执行', data)
	}, 1000)
}
fn1()

执行结果如下:

jquery参数传递-如何在Javascript中按顺序进行多个异步执行

我们发现这些方法似乎都是可以实现的jquery参数传递jquery参数传递,而且一旦代码大小增加,可读性就会增加。

承诺法

jquery参数传递-如何在Javascript中按顺序进行多个异步执行

function fn1() {
	return new Promise((resolve, reject) => {
		console.log('fn1执行')
		setTimeout(() => {
			console.log('fn1结束')
			resolve('fn1传递过去的参数')
		}, 1000)
	})
}
function fn2(data) {
	return new Promise((resolve, reject) => {
		console.log('fn2执行,接收的参数', data)
		setTimeout(() => {
			resolve('fn2传递过去的参数')
		}, 1000)
	})
}
function fn3(data) {
	return new Promise((resolve, reject) => {
		console.log('fn3执行,接收的参数', data)
		setTimeout(() => {
			resolve('fn3传递过去的参数')
		}, 1000)
	})
}
fn1().then(fn2).then(fn3).then(res => {
	console.log('最后一个', res)
})

jquery参数传递-如何在Javascript中按顺序进行多个异步执行

构建器方法

生成器是一个可以返回迭代器的函数。 这也是一个函数。 与普通函数相比,多了一个*. 函数体中可以使用yield关键字。 该函数在每次yield之后都会暂停,直到生成了这个对象,调用接下来的next(),并且每次调用next时,yieId都会被执行一次,然后暂停

function* main() {
	const res1 = yield fn1('开始')
	const res2 = yield fn2(res1)
	const res3 = yield fn3(res2)
	console.log(res3, '全部执行完毕')
}
const task = main()
task.next()
function fn1(data) {
	setTimeout(() => {
		console.log('fn1执行', data)
		task.next('fn1执行完毕')
	}, 1000)
}
function fn2(data) {
	setTimeout(() => {
		console.log('fn2执行', data)
		task.next('fn2执行完毕')
	}, 1000)
}
function fn3(data) {
	setTimeout(() => {
		console.log('fn3执行', data)
		task.next('fn3执行完毕')
	}, 1000)
}
console.log('我是最开始同步执行的')

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 jquery jquery参数传递-如何在Javascript中按顺序进行多个异步执行 https://www.wkzy.net/game/173905.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务