Отключить функции Firestore JavaScript - PullRequest
0 голосов
/ 12 июня 2018

Как я могу переписать этот код, чтобы не быть вложенным в себя?Мне также нужен доступ к значениям, полученным в предыдущих вызовах функций.

return docRef2.doc(`/users_stripe/${context.params.userID}`).get()
            .then(snapshot => {
            console.log("augu", snapshot);

            return stripe.customers.createSource( jsonParser(snapshot._fieldsProto.id, "stringValue"),
                    { source: jsonParser(snap._fieldsProto.token, "stringValue") },
                        function(err, card) {
                            console.log("listen people", card);
                            return docRef2.doc(`/users_stripe/${context.params.userID}/ptypes/ptypes`)
                            .set(card);
                    });
            })

1 Ответ

0 голосов
/ 12 июня 2018

Я не уверен , что ваш код делает здесь.Я попытался написать псевдо / семпл код, который может дать вам идею. Мой код не проверен, поэтому может содержать проблему.

let fun1 = () => {
    return new Promise((resolve, reject) => {
      docRef2.doc('/route').get().then(snapshot => {
        if( snapshot ) resolve(snapshot);
        else reject(snapshot);
      })
    })
  }

  let fun2 = (snapshot) => {
    return new Promies((resolve, reject)=>{
      stripe.customers.createSource(jsonParser(snapshot._fieldsProto.id, "stringValue"),
        { source: jsonParser(snap._fieldsProto.token, "stringValue") },
        function (err, card) {
          if (err) reject(false);// or whatever you wanna return
          else resolve(card);
        });
    })
  }

  async function fun(){
    let res1 = await fun1(); // Should contain snapshot
    let res2 = await fun2(res1); // Should contain card
    return docRef2.doc(`/users_stripe/${context.params.userID}/ptypes/ptypes`)
      .set(card);
  }
...