Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将经典承诺与异步承诺相结合_Javascript_Es6 Promise - Fatal编程技术网

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(数据)取而代之。