首页 > 解决方案 > 如何在不执行其余代码的情况下接收 Promise 的值?我得到 [objetc,object]

问题描述

这个函数应该返回“HomeStack”

const getSessionPrevious = async () => {
try {
    const value = await AsyncStorage.getItem("token"); //value default is "#$#"%2356"
    if (value !== null) {
    return "HomeStack";
    } else {
    return "LoginStack";
    }
 } catch (error) {
    return "LoginStack";
 }
};

console.log(getSessionPrevious() ); //I need get the value of the function in this line
.
.
.
rest of my code

当我做:

console.log(getSessionPrevious );

返回:

      Promise {
        "_40": 0,
        "_55": null,
        "_65": 0,
        "_72": null,
      }

怎么能得到这个承诺的结果?

标签: javascript

解决方案


首先,您需要添加括号才能实际调用该函数。然后你需要调用函数await来实际等待返回值。由于您只能awaitasync函数中使用,因此为此目的声明一个。

async function Demo()
{
    console.log(await getSessionPrevious()); 
}

Demo();

// Code here will be executed before Demo() is actually executed because we are not awaiting it.

请注意,添加异步代码(如 async/await 或使用纯 Promise)具有传染性。如果要使用结果,则必须在调用堆栈中支持调用的异步性质。这在这些主题中得到了很好的解释:


推荐阅读