2016-10-10 3 views
2

Heres моего код:Хочет вернуть обещание на основе ряда другого обещания completioen

var delete_card = function(){ 

    stripe.customers.deleteCard(
    this.service_id.stripe, 
    this.credit_card[0].stripe_id 
) 
    .then(function(obj){ 
    this.recipients.splice(0, 1); 
    return this.save() 
    }) 
} 

Оба вызова нашивки и сохранения называют возвращение обещание.

Как бы я ВОЗВРАЩАЛ обещание с помощью метода delete_card?

Могу ли я обернуть их все, как новое обещание, и вернуть обещание оттуда?
Как бы я структурировал это так, что я пузырю и ошибки и результаты?

Я хочу, чтобы иметь возможность сделать что-то от вызывающего абонента, как это:

delete_card 
.then(...) 
.catch(...) 

И просто продолжайте сочинять прикованное обещание?

+0

«Я бы обернул их все, как новое обещание, и вернул обещание оттуда?» «[** NOOO! **] (http://stackoverflow.com/q/23803743/1048572) – Bergi

+0

Hahahaha I прочитайте несколько лучших практик, в которых говорилось, что это плохая идея. Ответ на нуль ниже был именно тем, что я искал, и это тоже имеет смысл. –

ответ

5

Просто верните обещание в функции delete_card.

var delete_card = function(){ 

    /************/ 
    /**/return/**/ stripe.customers.deleteCard(
    /************/ 
    this.service_id.stripe, 
    this.credit_card[0].stripe_id 
) 
    .then(function(obj){ 
    this.recipients.splice(0, 1); 
    return this.save() 
    }) 
} 

Edit: Я сделал это оскорбительно очевидно, где добавить return так как разность кода настолько тонкая.

+0

ДА. Спасибо. Я продолжал пытаться повторить попытку 'this.save()' и получить неопределенную ошибку 'then'. Тогда я заметил, что вы вернули всю цепочку вверху: 'return stripe ....' Это работает! Спасибо! Обещания настолько приятные, что я даже не могу взглянуть на обратный вызов. –

+0

@NickKiermaier Ha, я сделал это немного более очевидным, где разница в том, что кто-то еще приходит и не может сказать, что я изменил. Извини за это. – zero298

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