首页 > 其他分享 >await 调用的函数不一定必须是 async 函数。 await 关键字通常用于 async 函数内部,用来等待一个 Promise 对象的解决。但如果被 await 调用的对象不是 Promis

await 调用的函数不一定必须是 async 函数。 await 关键字通常用于 async 函数内部,用来等待一个 Promise 对象的解决。但如果被 await 调用的对象不是 Promis

时间:2024-08-01 11:39:13浏览次数:9  
标签:resolve await test Promise msg async

await 调用的函数不一定必须是 async 函数。

 

await 关键字通常用于 async 函数内部,用来等待一个 Promise 对象的解决。但如果被 await 调用的对象不是 Promise ,那么它会被直接返回。  
function notPromiseFunction() {
  return 42;
}

async function example() {
  const result = await notPromiseFunction(); 
  console.log(result); 
}
example();

 

然而,如果希望通过 await 实现异步等待的效果,通常被 await 调用的应该是返回 Promiseasync 函数。比如:

 

async function promiseFunction() {
  return new Promise((resolve) => {
    setTimeout(() => resolve(100), 1000);
  });
}

async function anotherExample() {
  const result = await promiseFunction();
  console.log(result);
}
anotherExample();

在这个例子中,通过 await 等待了 promiseFunction 中异步操作的完成,并获取到最终的结果。

 

 

 如果没有写return的情况 那么执行结果是什么样子的呢?

<script>
export default {
	name: 'test',
	data() {
		return {
			msg: '李荣浩'
		}
	},
	async mounted() {
		const test = () => {
			new Promise(resolve => {
				setTimeout(() => {
					this.msg = '大拿哥'
					resolve()
				}, 1000)
			})
		}

		await test()
		this.msg = '等待你的人'
	}
}
</script>
<template>
	<h2>{{ msg }}</h2>
</template>

 

 

 

那么我们改造一下代码

<script>
export default {
	name: 'test',
	data() {
		return {
			msg: '李荣浩'
		}
	},
	async mounted() {
		const test = () => {
			return new Promise(resolve => {
				setTimeout(() => {
					this.msg = '大拿哥'
					resolve()
				}, 1000)
			})
		}

		await test()
		this.msg = '等待你的人'
	}
}
</script>
<template>
	<h2>{{ msg }}</h2>
</template>

 

 

 

标签:resolve,await,test,Promise,msg,async
From: https://www.cnblogs.com/yeminglong/p/18336340

相关文章

  • 我如何在 asyncio 中使用请求?
    我想在asyncio中执行并行http请求任务,但我发现python-requests会阻塞asyncio的事件循环。我找到了aiohttp但是它无法提供使用http代理的http请求服务。所以我想知道是否有办法借助||来进行异步http请求|。asyncio.你可以使......
  • async void 和async Task 有什么区别? 何时使用void
    在C#中,asyncvoid和asyncTask用于定义异步方法,但它们之间有一些重要的区别。下面我将详细解释这两种方法签名的区别以及何时使用它们。asyncTask定义:asyncTask方法返回一个Task对象,表示一个异步操作的完成状态。这种方法签名通常用于异步方法,它可以返回一个Task......
  • @Schedule定时任务和异步注解@Async时推荐自定义线程池
    1.原因@Schedule定时任务和异步注解@Async使用的默认线程池时, 池中允许的最大线程数和最大任务等待队列都是Integer.MAX_VALUE. 2.解决2.1、可以手动异步编排,交给某个线程池来执行。首先我们先向Spring中注入一个我们自己编写的线程池,参数自己设置即可,我这里比较随意。@C......
  • 什么是 async 、 await
    async和await是JavaScript中用于处理异步操作的关键字。 async函数是一个返回Promise对象的函数,它在函数体内部使用await来等待Promise对象执行结果。使用async函数可以让代码更加简洁易懂,避免了回调函数嵌套的问题。例如:asyncfunctiongetData(){ cons......
  • Python. 协程asyncio、gevent
    1、协程是一种轻量级的并发机制,允许你在单个线程内模拟并发执行多个任务。协程非常适合用于I/O密集型任务,如网络请求、文件读写等,在等待I/O操作完成时,协程可以继续执行其他任务而不是阻塞。生成器:协程的基础是生成器(generator)。生成器是一种特殊的迭代器,它可以使用 yi......
  • JS异步中async、await讲解
    目录1async、await1.1微任务队列&宏任务队列1.2问题引入1.3async函数返回值1.3.1示例1.3.2面试示例1.4await右值类型区别1.4.1非thenable1.4.2thenable类型1.4.3Promise类型1.4.3.1没有两个then等待1.4.3.2循环交叉输出1.5await+sync示例说明1.5.1返回和无返回1......
  • Robot Operating System——AsyncParametersClient监控Parameters的增删改行为
    大纲同步创建SyncParametersClient设置监控回调回调函数主体测试完整代码异步创建AsyncParametersClient设置监控回调测试完整代码在《RobotOperatingSystem——Parameter设置的预处理、校验和成功回调》一文中,我们使用Node::add_post_set_parameters_callback设......
  • asyncio Queue和Semaphore的结合使用
    importasyncio#假设这是你的大数据集large_data_set=range(1000000)#用1到1000000的数字模拟大数据集#任务队列task_queue=asyncio.Queue()#并发限制sem=asyncio.Semaphore(10)#任务处理函数asyncdefprocess_data(sem,q):whileTrue:#......
  • 限时10分钟,你会怎么实现这段async/await代码?
    ......
  • 为什么我在 Windows 上使用 async 和 wait 时会收到 NotImplementedError 错误?
    我有这段代码:importosimporttimeimportasyncioasyncdefrun_command(*args):"""Examplefrom:http://asyncio.readthedocs.io/en/latest/subprocess.html"""#Createsubprocessprocess=awaitasyn......