【发布时间】: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。
【问题讨论】:
-
result和promise来自哪里?他们不应该是一样的吗?我认为它应该类似于$.when(result).then(reply => ...)。
标签: jquery typescript promise