函数返回promise对象而不是值(异步/等待)

Law*_*ris 3 javascript node.js async-await

我使用async / await得到了以下代码:

function _getSSID(){
   return new Promise((resolve, reject)=>{
      NetworkInfo.getSSID(ssid => resolve(ssid))
   })
}

async function getSSID(){
   let mySSID =  await _getSSID()
   if (mySSID == "error") {
     return 'The value I want to return'
   }
}
Run Code Online (Sandbox Code Playgroud)

getSSID()等于这样的: 在此处输入图片说明

看起来该getSSID()函数将始终返回promise。如何获得"The value I want to return"纯文本?

任何帮助是极大的赞赏。

sam*_*ime 5

声明一个函数async意味着它将返回Promise。要将其Promise转换为值,您有两个选择。

then()在其上使用“常规”选项:

getSSID().then(value => console.log(value));
Run Code Online (Sandbox Code Playgroud)

您还可以await在函数上使用:

const value = await getSSID();
Run Code Online (Sandbox Code Playgroud)

使用的await要点是在async函数内部太多了。

在某个时候,您将在顶层有一些东西,可以使用第一个选项,也可以是如下所示的自调用函数:

((async () => {
    const value = await getSSID();
    console.log(value);
})()).catch(console.error):
Run Code Online (Sandbox Code Playgroud)

如果要这样做,请确保具有catch()on该函数来捕获任何其他未捕获的异常。

您不能await在顶层使用。

  • 它实际上并没有解决我的问题,我想创建一个变量,该变量将等于我想用承诺返回的值。 (2认同)