1

您可以通过将预先存在的 getter-setter 作为参数传递给 .then 方法来绑定它:

好的

var users = m.prop([]); //default value
m.request({method: "GET", url: "/user"}).then(users).then(function(data) {
    console.log(data);
    console.log(users());
});

NG

var users = m.prop([]); //default value
m.request({method: "GET", url: "/user"}).then(function(users) {
    console.log(users);
    console.log(users()); //Uncaught TypeError: users is not a function
});

为什么通过将它作为参数传递给 .then 方法,我可以绑定预先存在的 getter-setter 吗?

这个语法的规范是 Promise? 或者这个语法的规范是秘银?

※我可以理解 m.prop() 是 getter-setter。


在内部对 Promise 对象进行了什么样的处理?

而实现是库代码的哪一部分?

4

1 回答 1

2

这是正常 Promise 行为的一部分。传递给的函数then将在 Promise 解析并将 Promise 值传递给它时执行。Anm.prop是一个 getter/setter,它将把它的内部值设置为传入的任何值,然后返回它。

在第一个示例中,第一个then将 Promise 值分配给users,然后then执行一个函数,该函数将 Promise 值作为第一个参数 ( data) 接收,并将其与 的返回值一起记录users,这是同一件事。

在第二个示例中,第二个then函数将其命名为参数users:这意味着在该函数中,users引用 Promise 值而不是m.prop. 因为您已为变量指定了与 相同的名称,所以m.prop您不能再引用它m.prop

于 2015-12-26T16:28:17.263 回答