TypeScript jQuery 承诺不传递解析参数



我在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。

如果您希望将其作为调用上下文,则不应使用箭头函数。jquery、underscore 等库使用的回调就是这种情况。您可能应该只使用函数而不是胖箭头。

最新更新