2017-08-05 154 views
0
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和正在研究有關承諾模塊(?)。 這可能是一個非常基本的問題,但我無法找到全填充和拒絕方法獲取參數值的位置。使用承諾fullfilled,拒絕

+1

*在fullfilled和拒絕方法獲取參數的值* - 這是什麼意思?你能否澄清你想知道的事情? – PeterMader

+0

我的意思是fullfilled和被拒絕的方法獲取參數結果和錯誤每個。 – dogyhbin2

+0

你在這裏通過拒絕('錯誤信息'); – marvel308

回答

0

then()方法返回一個Promise。它最多需要兩個參數:Promise的成功和失敗情況的回調函數。

p.then(onFulfilled[, onRejected]); 

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

onFulfilled 如果承諾滿足調用的函數。這個函數有一個參數,履行價值。 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爲清楚起見

+0

哦!我明白謝謝 – dogyhbin2

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情況:

​​

並與reject情況:

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