Возврат значения внутри обратного вызова обычно ничего не делает. Когда вы включаете обратный вызов, charges.list
немедленно возвращает undefined
и вызывает обратный вызов после завершения операции.
Вы могли бы продолжать использовать обратный вызов и переносить его в Promise, но делать это не нужно, поскольку библиотека stripe поддерживает Promises. Только не передавайте обратный вызов, и вместо undefined
, charges.list
вернет Обещание, которое в конечном итоге разрешится в списке расходов.
function getCharges (limit) {
return stripe.charges.list({ limit: limit }) // returns a promise
.then(charges => {
return _.orderBy(charges, "created", "desc")
})
}
// with async/await, async functions always return a Promise
async function getCharges (limit) {
const charges = await stripe.charges.list({ limit: limit })
return _.orderBy(charges, "created", "desc")
}
Ваш распознаватель может вернуть либо значение, либо Promise, которое будет преобразовано в это значение, поэтому мы можем просто вернуть значение, возвращаемое getCharges
:
resolve: (root, args, context, info) => getCharges(args.limit)
Или, если вы хотите манипулировать зарядами внутри резольвера
resolve: async (root, args, context, info) => {
let charges = await getCharges(args.limit)
// do whatever
return charges
}
Кроме того, согласно документам, расходы уже возвращены, отсортированные по дате создания:
Сборы возвращаются в отсортированном порядке, причем самые последние сборы появляются первыми.