WinJS中的嵌套Promise

3

我正在实现一个DataAdapter以绑定到WinJS ListView控件。该接口需要一个返回Promise的getCount方法。如果我直接返回WinJS.xhr对象,那么它可以正常工作。然而,我想在将其传回调用者之前对其进行处理。

我的问题是,如果我返回相同的WinJS.xhr对象,但在其末尾添加一个“then”,它会取其输出并加以处理,那么调用者将无法获得预期的输出(在WinJS库的深处出现问题)。

因此,我认为我不理解如何返回嵌套在Promise中的Promise。有人知道如何做到这一点吗?

1个回答

4
这个问题一旦理解就很简单。
你需要知道两件事情:
1. 在一个 promise 上调用 .then() 方法会返回一个新的 promise。 2. 传递给 then 的函数的返回值会成为新 promise 的值。
所以,要实现你想要的功能,代码应该像这样写:
return WinJS.xhr({url: whateverYourURlIs })
    .then(function (response) {
        var tweakedResponse = processResponse(response);
        return tweakedResponse;
    });

这实际上正是我认为它的工作方式,但是在我使用的版本中有一个特定的错误导致调用我的函数的方法未能消耗承诺。但是,是的,就像你说的那样简单明了。 - Tom Lianza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接