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的某个地方