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

时间:2015-12-26 01:24:35

标签: mithril.js

  

您可以通过将其作为a传递来绑定预先存在的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? 要么 这个语法的规格是Mithril?

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

内部针对Promise对象运行什么类型的处理?

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

1 个答案:

答案 0 :(得分:2)

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

在第一个示例中,第一个then将Promise值赋给users,下一个then执行一个函数,该函数接收Promise值作为第一个参数({{1} }},并记录它,以及data的返回值,这是同样的事情。

在第二个示例中,第二个users函数为它的参数then命名:这意味着在该函数中,users引用了Promise值而不是users 。由于您已将变量命名为m.prop,因此您无法再引用该m.prop