Javascript 将经典承诺与异步承诺相结合
这个代码正确吗?我能把这样的承诺结合起来吗Javascript 将经典承诺与异步承诺相结合,javascript,es6-promise,Javascript,Es6 Promise,这个代码正确吗?我能把这样的承诺结合起来吗 var data = {} await getInfo(data.com) .then(result => {data = result}) .catch(error => {}) doStuffOnlyAfterGetInfo(data) 您可以,因为promise.then()和promise.catch()也返回承诺 使用try\catch async function getInfo(url) { try{ c
var data = {}
await getInfo(data.com)
.then(result => {data = result})
.catch(error => {})
doStuffOnlyAfterGetInfo(data)
您可以,因为
promise.then()
和promise.catch()
也返回承诺
使用try\catch
async function getInfo(url)
{
try{
const result = await fetch(url);
return {data: result};
}
catch(e){
}
}
是的,你可以这样做,你可以这样想
wait
:
wait x
其中x
是承诺或任何值。在您的情况下,chain call返回一个承诺
所有这些工作:
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
}
}
另外,不要忘记,只能在async
函数中使用wait
为什么要这样做?为什么不试试呢?试试{const data=await getInfo(data.com)}catch(e){}我之所以这样做是因为我喜欢它胜过使用try catch如果这正是你的代码,你可以只写
const data=await getInfo(data2.com).catch(()=>{});doStuffOnlyAfterGetInfo(数据)代码>取而代之。