【问题标题】:TypeScript jQuery promise not passing resolve parameterTypeScript jQuery 承诺不传递解析参数
【发布时间】:2017-05-15 21:36:29
【问题描述】:

我在 Visual Studio Code 中使用 TypeScript 2.3.2,我对它相当陌生。我正在使用它为 SharePoint 后端创建前端客户端。有一个名为 SPServices (http://sympmarc.github.io/SPServices/) 的 SharePoint jQuery 插件,它允许我从调用中获取 JSON 对象,并且该方法返回一个 $.Deffered() 对象。 SPServices 逻辑调用 resolveWith() 并将 SharePoint 查询的结果传递给它,如下所示:

var thisResult = {
      changeToken: newChangeToken,
      mapping: thisListJsonMapping,
      data: jsonData,
      deletedIds: deletedIds
    };

result.resolveWith(thisResult);

这是我处理分辨率的代码:

$.when(promise)
    .then(res => {
      let me = this;
      debugger;
     });

这是在代码尝试多次迭代之后。 “res”从未分配过,打字稿中 this 的上下文是类,当我在 Chrome 中点击断点时会看到它。在控制台中,如果我检查“this”,我会看到之前传递给 resolveWith() 的对象。

我看过的所有教程都说应该在“thisResults”中为 res 分配那个 JSON 对象。知道什么是错的,为什么这不会排队?

编辑:在使用下面的答案后,由于我有一个后备计划,我回去进行了一些额外的测试。如果我编辑 SPServices 库并将其更改为 result.resolve(thisResult); 而不是 resolveWith(thisResult);,则该对象将正确返回到 lambda。

【问题讨论】:

  • resultpromise 来自哪里?他们不应该是一样的吗?我认为它应该类似于$.when(result).then(reply => ...)

标签: jquery typescript promise


【解决方案1】:

如果您希望 this 成为调用上下文,则不应使用箭头函数。 jquery、下划线等库使用的回调就是这种情况。您可能应该只使用函数而不是粗箭头。

【讨论】:

  • 奇怪的是,我看到的打字稿文档显示了接收分辨率对象的粗箭头,但至少切换到一个函数为“this”提供了我需要的 TS 仍然需要的上下文编译。
猜你喜欢
  • 1970-01-01
  • 2015-10-10
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 2017-12-22
  • 2017-12-21
  • 2013-07-31
  • 2014-02-03
相关资源
最近更新 更多