Javascript 什么是';结果';在Win8JS代码中:WinJS.xhr({urlhere}).done(函数完成(结果){});

Javascript 什么是';结果';在Win8JS代码中:WinJS.xhr({urlhere}).done(函数完成(结果){});,javascript,windows-8,microsoft-metro,Javascript,Windows 8,Microsoft Metro,请参见以下代码行: WinJS.xhr({ url: "http://someurl.com" }).then( function fulfilled(result) { if (result.status === 200) { resDiv.style.backgroundColor = "lightGreen"; resDiv.inner

请参见以下代码行:

WinJS.xhr({ url: "http://someurl.com" }).then(
          function fulfilled(result)
          {
             if (result.status === 200)
             {
                resDiv.style.backgroundColor = "lightGreen";
                resDiv.innerText = "Success";
             }
          });
据我所知,当WinJS.xhr完成了它所做的一切时,然后执行匿名函数“completed”,参数为“result”

来自Java/C++背景,我对这段代码的工作原理非常困惑——“result”是如何传递给这个函数的?它在哪里说明了什么是“结果”?我如何知道对象“result”的类型以及它如何具有“status”成员

返回一个,其中包含接受
onComplete
onError
onProcress
回调函数的

此代码仅使用
onComplete
回调。当请求完成时,将调用回调函数,并向其发送一个参数,其中包含从服务器发送的值

如果您不熟悉will回调函数,那么将常规函数声明为回调函数可能会更清楚:

function fulfilled(result) {
  if (result.status === 200) {
    resDiv.style.backgroundColor = "lightGreen";
    resDiv.innerText = "Success";
  }
}

WinJS.xhr({ url: "http://someurl.com" }).then(fulfilled);
then
方法用于预处理结果,您应该使用来处理结果

我在文档中没有找到任何确切指定值来自服务器的形式的内容。它可能在某个地方,但与Microsoft文档一样,它相当完整,但并非所有内容都在任何地方,因此您必须在不同的地方查找特定信息。

返回a,其中包含接受
onComplete
onError
onProcress
回调函数的

此代码仅使用
onComplete
回调。当请求完成时,将调用回调函数,并向其发送一个参数,其中包含从服务器发送的值

如果您不熟悉will回调函数,那么将常规函数声明为回调函数可能会更清楚:

function fulfilled(result) {
  if (result.status === 200) {
    resDiv.style.backgroundColor = "lightGreen";
    resDiv.innerText = "Success";
  }
}

WinJS.xhr({ url: "http://someurl.com" }).then(fulfilled);
then
方法用于预处理结果,您应该使用来处理结果


我在文档中没有找到任何确切指定值来自服务器的形式的内容。它可能在某个地方,但与Microsoft文档一样,它相当完整,但并非所有东西都在任何地方,因此您必须在不同的地方查找特定信息。

我认为WinJS函数的文档仍然不太好。您可以在,这将为您提供一些相关信息—它表示
xhr
函数“将…XMLHttpRequest对象包装在承诺中”。就我个人而言,我发现看示例/快速入门比看参考文档更容易


传递给
completed
函数(或其中的第一个函数)的不是操作的“结果”,而是
XMLHttpRequest
对象本身。在这一点上,您可以获取其属性以查看结果-请查看以供参考。

我认为WinJS函数的文档仍然不太好。您可以查看位于的
WinJS.xhr
的文档,这将为您提供一些相关信息-它说
xhr
函数“包裹。。。就个人而言,我发现查看示例/快速入门比查看参考文档更容易


传递给
已完成的
函数(或其中的第一个函数)的不是“结果”,但
XMLHttpRequest
对象本身。在此基础上,您可以获取其属性以查看结果-请查看以供参考。

我将把我的答案分为两部分:第一部分涉及Javascript的实际执行模型,第二部分涉及编写的高级表达式

Javascript执行模型
  • WinJS
    计算为一个对象
  • 该对象有一个原型,其中包含一个
    xhr
    成员,其
    WinJS.xhr
    计算结果为。该成员是一个函数,下面我们将其称为
    a
    ,以便我们能够清楚地了解到底发生了什么
  • 在我们开始之前,
    {url:http://someurl.com“}
    返回一个对象,我们称之为
    B
  • 该对象
    B
    有一个名为
    url
    的属性
  • A(B)
    调用一个函数
    A
    ,并将值
    B
    作为参数。它返回一个对象,我们称之为
    C
  • 该对象
    C
    有一个原型,其中包含一个名为
    then
    的成员<代码>C。然后
  • 碰巧对函数求值。该函数我们将称为
    D
  • function completed(result){…}
    返回一个函数,我们称之为
    E
    。它也可以被称为
    completed
    ,但这个事实在这个程序片段中没有使用
  • D(E)
    调用一个函数
    D
    ,并将值
    E
    作为参数。对返回值不做任何处理
  • 高级视图 这里有三个功能;一个是回调(称为
    completed
    ),另外两个可以称为“方法”-一个是
    WinJS
    全局对象的
    xhr
    ,另一个是承诺对象的
    then

    WinJS.xhr({url:http://someurl.com“})
    创建并返回。你可以通过咨询来说服自己

    promise对象有一个名为
    then
    的方法,该方法注册了在允诺完成时您可以认为是事件处理程序的内容。在
    中注册的回调中使用的值
    result
    ,则来自于通过实际调用该承诺的方法
    done
    来实现该承诺的任何东西。你看不到这样做的代码,因为它在imp的某个地方