TypeScript jQuery承诺不传递resolve参数

时间:2017-05-13 15:23:44

标签: jquery typescript promise

我在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”从未被分配,打字稿中的这个上下文就是这个类,我在Chrome中遇到断点时会看到它。在控制台中,如果我检查“this”,我会看到之前传递给resolveWith()的对象。

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

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

1 个答案:

答案 0 :(得分:4)

如果您希望这是调用上下文,则不应使用箭头功能。像jquery,下划线等库使用的回调就是这种情况。你应该只使用函数而不是胖箭头。