当前位置: 首页 > 面试题库 >

将成功的诺言解析中的值分配给外部变量

邴奇逸
2023-03-14
问题内容

我有一个很傻的问题。考虑以下:

vm.feed = getFeed().then(function(data) {return data;});

getFeed() 返回成功解决的$ q递延承诺(我在角度上)。

我的目标是将vm.feed设置为等于成功回调返回的数据值。到目前为止,代码只是将vm.feed分配给等于$promise返回的对象getFeed()

我知道我可以简单地做到这一点:vm.feed = data在已解析的函数内部,但我想了解为什么此代码无法按原样工作。

PD:promise正确解析,即使已解决,但vm.feed仍然等于Promise,而不是数据。+10秒后,我复制了vm.feed的console.log:

Promise {$$state: Object} $$state: Objectstatus:1 value: Object

Promise对象中的value属性包含要分配给vm.feed(ei data)的Promise的实际解决方案。

谢谢!


问题答案:

您的发言确实不外乎要求解释分配从返回的值then()vm.feed变量。then()返回一个Promise(您可以在这里看到:https
:
//github.com/angular/angular.js/blob/master/src/ng/q.js#L283)。您可以通过查看Promise(一个简单的对象)
已从 函数中 拉出 并分配给来描述此情况vm.feed。一旦解释器执行该行,就会发生这种情况。


由于成功的回调不会在您调用then()时运行,而只会在您的诺言得到解决(稍后,异步)时运行,因此无法为then()调用者返回其值。这是Javascript的默认工作方式。这就是引入Promises的确切原因,因此您可以要求解释器以回调的形式将值
送给您。

尽管在JavaScript的未来版本(ES2016)上,将引入几个关键字,这些关键字几乎可以满足您现在的期望。好消息是,您可以通过从ES2016到当前广泛支持的版本(ES5)的转换,立即开始编写这样的代码。

有关该主题的详细介绍,请访问:https://www.youtube.com/watch?v
= lil4YCCXRYc

要立即使用它,您可以通过Babel转换代码:https
://babeljs.io/docs/usage/experimental/ (通过运行--stage 1)。

您还可以在这里看到一些示例:https :
//github.com/lukehoban/ecmascript-
asyncawait。



 类似资料:
  • 问题内容: 在上面,这是硬代码。我想将 变量 分配 给值。即,均值=注册; 让我知道! 问题答案: 您的问题不是很清楚。我假设变量是在Servlet中声明的,因为在JSP中使用Java是一种不好的做法。为了能够在转发到JSP的Servlet之间共享变量,您需要将此变量设置为request属性: 然后在JSP中,您可以使用JSP EL获得“ registration”属性的值: 您应该阅读Java

  • 问题内容: 我正在尝试读取Firestore文档的值。我尝试了两种不同的方法,但是每种方法都失败了。在第一个中,在返回行上引发错误。我发现了发生这种情况的原因,因此,我实现了第二种方法。 在第二种方法中,我将分配给变量,然后在函数末尾返回该变量(请参见下面的代码)。但是,当我这样做时,该函数将返回一个空数组。让我惊讶的是,打印返回了正确的值,但是在函数执行了return语句后不久。是否因为它是异步

  • 我是helm的新手,我希望能够使用配置映射和共享环境变量将gitlab项目变量写入文件。 我为每个环境(其中

  • 问题内容: 我正在使用Spring MVC。我有一个带有很多静态变量的注释类。我想使用application.properties文件中的值实例化它们。 例如在中,我有: 然后在课堂上是: 我得到了 我也尝试过 接着: 它给出了相同的错误。 问题答案: 你不必在静态字段中保留任何属性。 你不知道何时修改此静态字段 你不知道哪个线程修改了它的价值 任何时候任何线程都可以更改此静态字段的值,并且你被拧

  • 问题内容: 我正在使用while循环创建XML,但是现在我需要在生成的XML之前加上XML标头信息和包装器标签,但我正努力使其正常工作,这是我的代码, 我似乎找不到解决方法,我也尝试制作一个函数,但是效果并不理想,这里是代码, 提前感谢! 问题答案: 这是使用DOM的方法: 请注意,该函数希望您传递完整的结果数组,因此我可以使用以下方法进行测试: 该函数将返回 请注意,DOM自动为您转义了John

  • 问题内容: 我想要使用在Python中使用函数返回值将值分配给shell变量的解决方案的PHP等效方案 在我的php文件中,我读取了一些常量值,例如: 到目前为止,在我的shell脚本中,我有以下代码:- 我能够通过外壳正确执行文件。 要进一步了解我要执行的操作,请检查从PHP文件读取配置设置并使用Shell脚本上传整个项目代码的最干净方法 更新 更正为 解 正如Fritschy回答的那样,它可以