这段代码是否正确?我可以结合这样的承诺吗?
var data = {}
await getInfo(data.com)
.then(result => {data = result})
.catch(error => {})
doStuffOnlyAfterGetInfo(data)
答案 0 :(得分:1)
是的,你可以这样做,你可以这样想await
:
await x
其中x
是承诺或任何值。在您的情况下,链调用返回一个承诺。
所有这些都有效:
async function fn() {
try {
var a = await 20; // a = 20
var b = Promise.resolve(20); // b = 20
var c = Promise.reject(20); // This throws exception
var d = Promise.reject(20).catch(() => 30) // d = 30
var e = fetch(url) // same as fetch(url).then(e => /*...*/)
var f = fetch(url).then(res => res.json())
catch (e) {
console.log(e) // 20
}
}
另外请注意,您只能在await
个功能中使用async
。
答案 1 :(得分:0)
您可以,因为promise.then()
和promise.catch()
也会返回承诺。
您可以在then\catch
使用try\catch
async function getInfo(url)
{
try{
const result = await fetch(url);
return {data: result};
}
catch(e){
}
}