Это возможный способ сделать это, но я не уверен, что вам действительно нужен обратный вызов, важно подумать только о добавлении this.afs.collection('ledger').add(data);
этой строки в .then
, когда обещание разрешено (асинхронно). Я также поставил вам обратный вызов, чтобы проверить, является ли это полезным.
updateLedger(id: string, data: any, callback: function) {
this.afs.collection('chartofaccounts').doc(id).ref.get().then(doc => {
if (doc.data().normalside === 'debit') {
///// set the runningBalance of the data object passed into the function here
data.runningBalance = doc.data().debitAmount - doc.data().creditAmount;
// You set it here maybe you don't even need the callback
this.afs.collection('ledger').add(data);
callback(data);
} else {
///// or here...
data.runningBalance = doc.data().creditAmount - doc.data().debitAmount;
// You set it here maybe you don't even need the callback
this.afs.collection('ledger').add(data);
callback(data);
}
});
}
// In the call you receive the result
updateLedger(id, data, (resultData) => {
console.log(resultData)
})
Убедитесь, что then
вызывается, если нет, добавьте оператор .catch
, возможно, есть другие проблемы ...