我正在通过承诺教程,我无法理解参数toss
如何从function tossASix()
分配值。如果有人可以花时间解释它,那将非常感激。
function dieToss() {
return Math.floor(Math.random() * 6) + 1;
}
function tossASix() {
return new RSVP.Promise(function(fulfill, reject) {
var n = Math.floor(Math.random() * 6) + 1;
if (n === 6) {
fulfill(n);
} else {
reject(n);
}
});
}
function logAndTossAgain(toss) {
console.log("Tossed a " + toss + ", need to try again.");
return tossASix();
}
function logSuccess(toss) {
console.log("Yay, managed to toss a " + toss + ".");
}
function logFailure(toss) {
console.log("Tossed a " + toss + ". Too bad, couldn't roll a six");
}
tossASix()
.then(null, logAndTossAgain) //Roll first time
.then(null, logAndTossAgain) //Roll second time
.then(logSuccess, logFailure); //Roll third and last time
答案 0 :(得分:1)
。然后接受两个参数,这两个参数实际上都是单个参数函数。在前两个版本中,您的履行函数都是空的,而拒绝函数是logAndTossAgain(折腾)。 Promise将根据其中的标准调用履行功能或拒绝功能(在这种情况下,随机结果是否为6)。因此,随机卷的值n然后传递给logAndTossAgain函数(如果它不是6)。这就是你对折腾参数的价值。
答案 1 :(得分:0)
.then
隐式传递参数。
如果onFulfilled是一个函数: 必须在承诺履行后调用,并将承诺的价值作为其第一个参数。
关于传递参数:
.then(foo)
与
相同.then(function(val) {
foo(val)
})
(在其他方面,这两个代码块不相等)