Javascript 从更高范围内的承诺中获取的返回值
我想要一个返回名称的简单函数,下面是代码:Javascript 从更高范围内的承诺中获取的返回值,javascript,vue.js,Javascript,Vue.js,我想要一个返回名称的简单函数,下面是代码: getName(entity, id) { const promise = userServices.getName(entity, id).then((data) => { return data; }); //I want to return 'data' value here } 我使用的是vue,我知道
getName(entity, id) {
const promise = userServices.getName(entity, id).then((data) => {
return data;
});
//I want to return 'data' value here
}
我使用的是vue,我知道我可以生成另一个
data()变量
,但我不想将其用于单个函数。还有其他简单的方法吗?我是否可以在函数中创建一个变量
,该变量可以在promise中访问?您试图做的是不可能的。您无法将异步数据转换为同步代码,这就是承诺存在的原因
基本上有两种选择:
async getName(entity, id) {
await data = userServices.getName(entity, id);
return data;
};
getName
时,它将进入事件循环,并且仅在主代码完成时执行
getName(entity, id) {
return userServices.getName(entity, id);
}
然后,您可以将
。然后
链接到函数外部,即在主代码范围内,这样您就可以使用在主代码范围内使用该返回值找到的变量/调用函数/更新状态。但是,它仍然是一个。然后,
承诺子句-意味着该值不会在所有主代码范围内都可用,而只能在内使用。然后,
再次,它仍然是一个异步操作。您尝试执行的操作是不可能的。您无法将异步数据转换为同步代码,这就是承诺存在的原因
基本上有两种选择:
async getName(entity, id) {
await data = userServices.getName(entity, id);
return data;
};
getName
时,它将进入事件循环,并且仅在主代码完成时执行
getName(entity, id) {
return userServices.getName(entity, id);
}
然后,您可以将
。然后
链接到函数外部,即在主代码范围内,这样您就可以使用在主代码范围内使用该返回值找到的变量/调用函数/更新状态。但是,它仍然是一个。然后是一个承诺的子句-意味着该值不会在所有主代码范围内都可用,而只能在内使用。然后,它仍然是一个异步操作。没有办法做到这一点,您只能返回解析此数据的承诺,因为getName函数内部的操作是异步的,除非您像稍后将更新的对象一样返回(这很可能不是您想要的,因为无法保证在访问它之前将值写入其中)返回稍后更新的对象
-字面上是承诺的定义@KrzysztofKrzeszewskiyes确切地说,这就是承诺,但是在这种情况下,他可以使用非承诺语法,这在某些特定情况下可能需要cases@KrzysztofKrzeszewski我有点不同意。。。你能给我举个例子吗?如果承诺帮不上忙,那就需要什么?有太多的promise实现和库,包括原生promises库中的大量实用程序,我发现很难想象这样的场景:实现您自己的promise-like逻辑会更好…没有办法做到这一点,您只能返回解析此数据的承诺,因为getName函数内部的操作是异步的,除非您像稍后将更新的对象一样返回(这很可能不是您想要的,因为无法保证在访问它之前将值写入其中)返回稍后更新的对象
-字面上是承诺的定义@KrzysztofKrzeszewskiyes确切地说,这就是承诺,但是在这种情况下,他可以使用非承诺语法,这在某些特定情况下可能需要cases@KrzysztofKrzeszewski我有点不同意。。。你能给我举个例子吗?如果承诺帮不上忙,那就需要什么?有太多的承诺实现和库,包括本机承诺库中的大量实用程序,我发现很难想象实现自己的承诺逻辑会更好。。。