【问题标题】:Method executing on undefined result (from method with promises to resolve)对未定义结果执行的方法(来自承诺解决的方法)
【发布时间】:2018-04-16 16:09:06
【问题描述】:

这可能是(也可能是)一个简单的问题,但我真的对如何处理承诺感到困惑。我已经阅读了很多关于它的内容,但仍然无法完全理解它。我正在使用 Typescript 和 Angular,我正在从 API REST 请求数据。我有一个 getServices 方法,它返回一个包含我从 API 获得的信息的数组。

我的问题是当我在这里调用这个方法时:

this.getServices = (query) => {
            return this.source.getServices(query)
            .then(this.transformToSegments(false));
        };

我遇到了一个错误 TypeError: results is undefined.

结果由 transformToSegments 使用。我放了很多 console.log() 来调试,我看到 transformToSegments 在 getServices 得到解决之前正在执行,所以它试图处理一个未定义的结果。我显然做错了什么,但我无法修复它。 任何帮助表示赞赏!

提前致谢,

朱莉娅

【问题讨论】:

  • 当我尝试用 JavaScript 处理 Promises 时,我发现这篇文章非常有帮助:pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html
  • @BrileyHooper 是的,这很好!
  • @BrileyHooper 太棒了!这确实很有帮助,我不得不说我正在(正在修复)很多菜鸟错误:$ 非常感谢!

标签: javascript angularjs typescript angular-promise


【解决方案1】:

这是一个常见的错误。您将this.transformToSegments(false) 的结果传递给.then() 回调。我假设您想要更多类似的东西:

.then(results => this.transformToSegments(false, results))

这将延迟转换的执行,直到调用 then

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多