在JavaScript中,当你使用await
关键字等待一个Promise
对象时,await
会暂停执行该异步函数,直到Promise
对象解决(resolve)或拒绝(reject)。具体地:
-
如果Promise解决(resolve):
await
会返回Promise
解决时传递的值。这个值可以是任何类型,例如字符串、数字、对象等。
-
如果Promise拒绝(reject):
await
会抛出一个异常,异常的值是Promise
拒绝时传递的值。这通常是一个错误对象。需要使用try...catch
结构来捕获这个异常并进行处理。
示例
以下是一个简单的示例,展示了await
的使用:
async function exampleFunction() {
try {
const resolvedValue = await new Promise((resolve, reject) => {
setTimeout(() => resolve("Success!"), 1000);
});
console.log(resolvedValue); // 输出: Success!
} catch (error) {
console.error('Error:', error);
}
}
exampleFunction();
在这个例子中,await
等待Promise
解决并返回"Success!",然后将其打印到控制台。
如果Promise
被拒绝,可以使用try...catch
来捕获错误:
async function exampleFunctionWithError() {
try {
const resolvedValue = await new Promise((resolve, reject) => {
setTimeout(() => reject(new Error("Something went wrong")), 1000);
});
} catch (error) {
console.error('Error:', error.message); // 输出: Error: Something went wrong
}
}
exampleFunctionWithError();
在这个例子中,当Promise
被拒绝时,await
抛出一个异常,catch
块捕获并处理该异常。
希望这些信息能帮助你更好地理解await
在处理Promise
对象时的行为!如果还有其他问题,请随时提问。