我看到的代码是这样的:

myObj.doSome("task").then(function(env) {
    // logic
});

那么()从何而来?


当前回答

".then()"函数广泛用于Windows 8 Store应用程序异步编程中的承诺对象。 据我所知,它在某种程度上像一个回调。

在本文档中查找详细信息 http://msdn.microsoft.com/en-us/library/windows/apps/hh700330.aspx

当然,它也可以是任何其他已定义函数的名称。

其他回答

我大概晚了8年,嗯……不管怎样,我真的不知道then()做什么,但也许MDN可能有一个答案。实际上,我可能更懂一点。

这将向您显示所需的所有信息(希望如此)。除非有人已经发布了这个链接。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

格式为promise.prototype.then() promise和prototype有点像变量,但不像javascript中的变量,我的意思是像navigator。getbattery()。then()这样的东西,这个确实存在,但很少在网络上使用,这个显示设备电池的状态,如果你好奇,MDN上还有更多信息。

".then()"函数广泛用于Windows 8 Store应用程序异步编程中的承诺对象。 据我所知,它在某种程度上像一个回调。

在本文档中查找详细信息 http://msdn.microsoft.com/en-us/library/windows/apps/hh700330.aspx

当然,它也可以是任何其他已定义函数的名称。

在这种情况下,then()是doSome()方法返回的对象的类方法。

截至ECMAScript6

.then()方法已经包含在纯JavaScript的Promises中。

来自Mozilla文档:

then()方法返回一个Promise。它有两个参数:callback 有关承诺成功及失败个案的功能。

Promise对象定义为

Promise对象用于延迟和异步 计算。Promise表示未完成的操作 然而,但在未来是值得期待的。

也就是说,Promise充当一个尚未计算,但将来将被解析的值的占位符。然后,.then()函数用于在Promise被解析时关联将要在Promise上调用的函数——无论是解析成功还是解析失败。

ECMAScript6之前

据我所知,在javascript中还没有内置的then()方法(在撰写本文时)。

无论doSome(“task”)返回的是什么,似乎都有一个调用then的方法。

如果您将doSome()的返回结果记录到控制台,您应该能够看到返回结果的属性。

console.log( myObj.doSome("task") ); // Expand the returned object in the
                                     //   console to see its properties.

我猜doSome会返回这个,也就是myObj,它也有then方法。标准方法链接…

如果doSome不返回this,作为doSome执行的对象,请放心,它将返回具有then方法的某个对象…

正如@patrick指出的,标准js中没有then()