使用承诺履行,拒绝

时间:2017-08-05 15:11:54

标签: javascript node.js

function task1(fullfill, reject) {
console.log('Task1 start');
setTimeout(function() {
    console.log('Task1 end');
    //fullfill('Task1 result');
    reject('Error msg');
}, 300);
}
function fullfilled(result) {
     console.log('fullfilled : ', result);
}
function rejected(err) {
     console.log('rejected : ', err);
}
new Promise(task1).then(fullfilled, rejected);

我刚刚启动了node.js并正在研究promise模块(?)。 这可能是一个非常基本的问题,但我无法找到履行和拒绝的方法获取参数值的位置。

2 个答案:

答案 0 :(得分:0)

then()方法返回一个Promise。它最多需要两个参数:Promise的成功和失败案例的回调函数。

p.then(onFulfilled[, onRejected]);

p.then(function(value) {
  // fulfillment
}, function(reason) {
  // rejection
});

onFulfilled 如果Promise被满足则调用的函数。此函数有一个参数,即履行值。 onRejected可选 如果Promise被拒绝,则调用一个函数。这个函数有一个参数,即拒绝原因。

let p = function(){
    return new Promise(function(resolve, reject) {
        if(condition){
            // this arg would be caught in onFulfilled
            resolve(arg);
        }
        else{
            // this arg would be caught in onRejected
            reject(arg2);
        }
    })
}

为了清晰起见,请查看p

答案 1 :(得分:0)

要添加到@ marvel308的答案,resolve()子句中提供了then所提供的任何内容,而reject()子句中提供了catch所提供的内容function makePromise(condition) { return new Promise(function(resolve, reject) { condition ? resolve('2 + 2 = 4') : reject('No, wait. Maybe it is 5.') }) }

考虑一下:

resolve

现在,如果我们使用makePromise(true) .then(x => console.log(x)) // 2 + 2 = 4 .catch(x => console.log(x)) 案例调用此函数:

reject

使用makePromise(false) .then(x => console.log(x)) .catch(x => console.log(x)) // No, wait. Maybe it is 5. 案例:

result