Discuss / JavaScript / 不明白这个表述

不明白这个表述

Topic source

job1.then(job2).then(job3).catch(handleError); 其中,job1、job2和job3都是Promise对象。 不明白 我觉得job1是Promise对象,job2,3应该是异步函数

job2 job3 不是Promise对象,后面的then和cathch怎么执行

沙倫血夜

#3 Created at ... [Delete] [Delete and Lock User]

job2 job3也要有承諾(為Promise對象) 如果他們之間沒有共同承諾 光只有job1單方面承諾也是沒有用的

男方我願意 女方拒絕 總不能強著來

楼主的猜测是对的,文中表述不太严谨,廖大偶尔会手滑. 2楼3楼两位朋友太迷信,不是学习的正确态度.

var job2=function (r) {
    log('Done: ' + r);
};
var job3=function (reason) {
    log('Failed: ' + reason);
};

var job1 = new Promise(function (resolve, reject) {
    log('start new Promise...');
    var timeOut = Math.random() * 2;
    log('set timeout to: ' + timeOut + ' seconds.');
    setTimeout(function () {
        if (timeOut < 1) {
            log('call resolve()...');
            resolve('200 OK');
        }
        else {
            log('call reject()...');
            reject('timeout in ' + timeOut + ' seconds.');
        }
    }, timeOut * 1000);
}).then(job2).catch(job3);
console.log(job1 instanceof Promise);
console.log(typeof(job1));
//console.log(typeof(job1.then(job2)));
console.log(typeof(job2));
console.log(job2 instanceof Promise);
//console.log(typeof(job1.then(job3)));
console.log(typeof(job3));
console.log(job3 instanceof Promise);

用廖大自己的示例演示一下,job2,job3type是function,job1的type是object. job1.then(job2) 这个表达式才返回一个Promise,链式就得这样才玩得下去. 看见job1是Promise,就想当然地认为job2,job3也是promise,这是被廖大忽悠瘸了.

.then(job2)和.then(job3)就是异步函数,他们返回的是Promise对象,即job2,job3

我觉得这是链式调用, job2和job3当然也返回promise, 因为参数只有resolve, 所以会一直成功, 会一直沿着链执行下去

XNOKIA

#7 Created at ... [Delete] [Delete and Lock User]

老师不是讲语法,不是说传什么类型参数,所以老师讲的没错,要从结果的角度去看,而不是从传参来角度去看。

没错,参数的确是个函数,但实质内容(即函数执行结果)是个promise对象。


  • 1

Reply