gpt4 book ai didi

javascript - 从更高范围内的 Promise 获得返回值

转载 作者:行者123 更新时间:2023-12-01 00:29:30 26 4
gpt4 key购买 nike

我想要一个简单的函数返回名称,代码如下:

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

我正在使用 vue,并且我知道我可以创建另一个 data() 变量,但我不想将其用于单个函数。还有其他简单的方法吗?我可以在函数中创建一个可在 Promise 内访问的变量吗?

最佳答案

你想做的事情是不可能的。您无法将异步数据放入同步代码中,这就是 Promise 存在的原因。

基本上你有两个选择:

  1. 异步/等待

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

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

  • 返回 promise

    getName(entity, id) {
    return userServices.getName(entity, id);
    }
  • 然后您可以将 .then 链接到函数外部,即在主代码范围内,这样您就可以使用在主代码范围中找到的变量/调用函数/更新状态返回值。但是,它仍然是 Promise 的 .then 子句 - 意味着该值无法通过所有主代码范围使用,而只能在 内部使用。然后 又一次 - 它仍然是一个异步操作。

    关于javascript - 从更高范围内的 Promise 获得返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58691280/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com