面试题答案
一键面试在JavaScript异步迭代中,当异步操作出现错误时,可以使用try - catch
语句来进行错误处理。
try - catch
在异步迭代器中的应用场景
try - catch
语句在异步迭代器中的主要应用场景是捕获异步迭代过程中产生的错误。当使用for await...of
循环来遍历异步迭代器时,如果迭代器中的某个异步操作(如Promise的拒绝)抛出错误,try - catch
块能够捕获这个错误,从而避免错误导致程序崩溃,并进行相应的错误处理。
举例说明
- 网络请求失败(使用
fetch
模拟) 假设我们通过fetch
进行一系列网络请求,其中可能会出现网络请求失败的情况:
async function fetchData() {
const urls = ['https://example.com/api1', 'https://nonexistent-url.com/api2', 'https://example.com/api3'];
try {
for await (const response of urls.map(url => fetch(url))) {
const data = await response.json();
console.log(data);
}
} catch (error) {
console.error('Network request failed:', error.message);
}
}
fetchData();
在上述代码中,fetch
返回Promise,for await...of
遍历这些Promise。如果某个fetch
操作失败(例如第二个URL不存在),try - catch
块会捕获错误并在catch
块中输出错误信息。
- 文件读取错误(使用
fs/promises
模拟) 假设我们使用Node.js的fs/promises
模块读取一系列文件,其中可能会出现文件不存在等错误:
const fs = require('fs/promises');
async function readFiles() {
const files = ['file1.txt', 'nonexistentFile.txt', 'file2.txt'];
try {
for await (const content of files.map(file => fs.readFile(file, 'utf8'))) {
console.log(content);
}
} catch (error) {
console.error('File read failed:', error.message);
}
}
readFiles();
在这段代码中,fs.readFile
返回Promise,for await...of
遍历这些Promise。如果某个文件读取操作失败(例如第二个文件不存在),try - catch
块会捕获错误并在catch
块中输出错误信息。