我在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。
答案 0 :(得分:4)
如果您希望这是调用上下文,则不应使用箭头功能。像jquery,下划线等库使用的回调就是这种情况。你应该只使用函数而不是胖箭头。