Я пытаюсь выполнить Promisify модуль полосы, но столкнулся с проблемой.Продвигайте все субметоды на узле модуля
Если я бегу:
const stripe = Promise.promisifyAll(require('stripe')(secretKey));
const response = await stripe.accounts.retrieveAsync();
retrieveAsync не является функцией. Я должен сделать что-то вроде этого:
const accounts = Promise.promisifyAll(stripe.accounts);
const response = await accounts.retrieveAsync();
Но, очевидно, это плохо масштабируется. Как я могу обещать все подтексты этого модуля? Благодаря
'accounts' не определен в вашем первом фрагменте. Вы имели в виду 'stripe.accounts'? – cartant
Yup, хороший глаз, исправлено – Antoine
Вы можете создать собственное рекурсивное решение, которое начнется с объекта stripe, вызовите 'Promise.promisifyAll()' на нем, затем найдите любые свойства, которые также содержат простые объекты, и вызовите 'Promise.promisifyAll () 'на этих дочерних объектах и повторяется рекурсивно. Для краевых случаев вам, вероятно, придется защищать себя от циклических ссылок, сохраняя объект «Set» всех объектов, которые вы уже перепрограммировали, и отказываетесь делать то, что вы уже сделали. Могут быть определенные свойства, которые вам нужно избегать обработки (например, '.prototype'). – jfriend00