从更高范围的承诺中获得回报价值

我想要一个简单的函数来返回名称,这是代码:

        getName(entity,id) {
            const promise = userServices.getName(entity,id).then((data) => {
                return data;
            });
            //I want to return 'data' value here
        }

我正在使用 vue ,我知道我可以再创建一个data() variable,但是我不想将其用于单个功能。还有其他简便的方法吗?我可以在可以在promise内部访问的函数中创建variable吗?

daodan_9 回答:从更高范围的承诺中获得回报价值

您要尝试做的事是不可能的。您无法将异步数据转换为同步代码,这就是Promise存在的原因。

您基本上有2个选择:

  1. 异步/等待

    async getName(entity,id) {
        await data = userServices.getName(entity,id);
        return data;
    };
    

这是可行的,但是请记住,异步函数在后台返回promise,因此操作仍然保持异步。这意味着当您在主代码中调用getName时,它将进入事件循环,并且仅在主代码完成后才执行。

  1. 兑现承诺

    getName(entity,id) {
        return userServices.getName(entity,id);
    }
    

然后,您可以将.then链接到函数外部(即在主代码范围内),因此可以使用该返回值使用在主代码范围内找到的变量/调用函数/更新状态。但是,它仍然是promise的.then子句-意味着该值将无法通过主代码范围的 all 使用,而只能在.then内部使用,它仍然是异步操作。

本文链接:https://www.f2er.com/3167612.html

大家都在问