警告⚠:await has no effect on the type of this expression.

该文章已生成可运行项目,

警告翻译后的意思是:在当前表达式前面添加await没意义。 

在现代 JavaScript 开发中,asyncawait 关键字提供了处理异步操作的简洁方式。尽管它们的使用非常普遍,但在某些情况下,开发过程中可能会遇到“await has no effect on the type of this expression”的错误提示。

1.什么是 await

await 是一个操作符,用于等待一个Promise 对象。它只能在 async 函数内部使用。使用 await 可以让异步代码的写法看起来更像同步代码,从而提高可读性。

async function getData() {
  const response = await axios.get('https://api.example.com/data');
  const data = await response.json();
  return data;
}
2.什么是“await has no effect on the type of this expression”?

在一个不返回 Promise 的表达式上使用 await 时, 编译器会抛出“await has no effect on the type of this expression”警告。这意味着 await 在这个上下文中没有实际的效果,因为它所等待的不是一个 Promise。

/**
 * await 被用在一个数字上。由于 5 不是一个 Promise,提示 await 在这里没有效果
 */
async function example() {
  // 一般这仅仅是一个警告,因为await后边也可以跟着其他表达式,比如一个常量表达式
  const result = await 5; 
  console.log(result);
}
3.解决方案

需要确保 await 后面跟的是一个 Promise。以下是一些常见的解决方案:

33.1 确保使用 Promise
async function example() {
  const promise = new Promise((resolve) => setTimeout(() => resolve(5), 1000));
  const result = await promise; // 这里是有效的
  console.log(result); // 输出 5
}
3.2 检查函数返回值

在调用一个函数并使用 await,确保该函数返回的是一个 Promise。

function getNumber() {
  return Promise.resolve(5);
}

async function example() {
  const result = await getNumber(); // 这里是有效的
  console.log(result); // 输出 5
}

“await has no effect on the type of this expression” 警告通常是由于在不返回 Promise 的表达式上使用 await 导致的。通过确保 await 后面跟的是一个 Promise,若不需要等待某个表达式,可以移除 await,有效地避免这一警告。

本文章已经生成可运行项目
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值