函数返回promise对象而不是value(async / await)

时间:2018-02-21 14:53:36

标签: 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'
   }
}

getSSID()等于: enter image description here

看起来getSSID()函数将始终返回一个承诺。如何以纯文本格式获取"The value I want to return"

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

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

"正常"选项是在其上使用then()

getSSID().then(value => console.log(value));

您还可以在功能上使用await

const value = await getSSID();

使用await的问题是它在async函数内部太多了。

在某些时候,你会在顶级有一些东西,它可以使用第一个选项,也可以是这样的自我调用函数:

((async () => {
    const value = await getSSID();
    console.log(value);
})()).catch(console.error):

如果你这样做,请务必在该函数上使用catch()来捕获任何未被捕获的异常。

您无法在顶层使用await