2015-12-03 2 views
-1

Я пытаюсь создать новый Promise с использованием библиотеки bluebird. Код такой же заключается в следующем:then() не получает вызов при использовании обещания bluebird

var promise = new Promise(function(resolve, reject) { 
    console.log('Promise created'); 
}) 
var myPromise = promise.then(function() { 
    console.log('Then called'); 
}); 

setTimeout(function() { 
    console.log('promise successful'); 
    console.log(myPromise); 
}, 3); 

Но контроль никогда не идет внутри then блока. Я также вижу, что объект обещания не имеет какой-либо Выполнение обработчика:

Promise { 
    _bitField: 0, 
    _fulfillmentHandler0: undefined, 
    _rejectionHandler0: undefined, 
    _promise0: undefined, 
    _receiver0: undefined } 

Как я создать обещание и связать then блок к тому же.

+2

Необходимо выполнить обещание. – SLaks

+1

Вы никогда не соглашаетесь с этим обещанием, так почему вы ожидаете, что обработчики выполнения будут называться? – Bergi

+0

"* Я также вижу, что объект обещания не имеет обработчика выполнения *" - 'myPromise' его не имеет. 'обещание', на которое вы назвали' then', делает. – Bergi

ответ

3

Для того, чтобы использовать Promise, которое вы создали, вам необходимо решить и/или отклонить из вашего обещания, вызвав каждую функцию соответственно.

var promise = new Promise(function(resolve, reject)) {  
    if (someWork) resolve(1); 
    if (!someWork) reject(2); 
} 

promise.then(function(data) { 
    console.log(data); // 1 
}); 
0

Вы должны позвонить resolve() в функцию Promise.

Смежные вопросы