如何直接获取browser.tabs.query返回数组的首个元素?
问题原因
你写的const tab = await browser.tabs.query(...)[0]无法运行,是因为await的运算符优先级低于数组索引[]——代码会先尝试对未resolve的Promise对象执行[0]操作,这显然不符合预期。
简洁实现方式
这里有两种简洁的写法可以直接获取数组的首个元素:
1. 用括号包裹await表达式
通过括号提升await的优先级,确保先获取Promise resolve后的数组,再取第一个元素:
const tab = (await browser.tabs.query({currentWindow: true, active: true}))[0];
2. 数组解构赋值(更推荐)
利用ES6的数组解构语法,直接从返回的数组中提取首个元素,代码更直观简洁:
const [tab] = await browser.tabs.query({currentWindow: true, active: true});
如果查询返回的数组为空,tab会被赋值为undefined,和tab[0]的行为完全一致,符合你的需求。
内容的提问来源于stack exchange,提问作者Magenta
相关产品推荐
相关产品推荐

