警告⚠: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,有效地避免这一警告。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值