Если вы хотите вернуть данные при первоначальном вызове, но также выполнить перевод, просто измените его на следующее:
// Capture a particular payment
rzp.payments.capture(payment_id, 100000).then((data) => {
const ret = event.data.ref.child('status').set(data);
console.log(data)
// Create transfers on a payment
rzp.payments.transfer(payment_id, {
transfers: [
{
account: 'acc_aldsfkas123123adsf',
amount: 100,
currency: 'INR'
}
]
})
return ret
})
Проблема в том, что вы использовали return
перед запускомфункция передачи.После нажатия return
код, следующий за ним, никогда не будет запущен.Сохраняя желаемый результат в переменной, вы можете выполнить другую работу, а затем вернуть ее.
В качестве альтернативы вы можете запустить код в другом порядке, так как выглядит, как будто два вызова не зависят отдруг друга.
Действительно, вы должны разбить все свои асинхронные работы на одну порцию и понятные функции, которые можно объединить в цепочку для лучшей читаемости.Например, ваша цепочка может выглядеть так:
capturePayment(payment_id, 100000)
.then(updateDB)
.then(transfer)
.then(data => console.log('success'))
.catch(err => console.error(err))
Тогда все, что вам нужно, это убедиться, что каждая из ваших функций сцепления принимает один аргумент, который можно передать из результата предыдущего.