格子 Link Javascript

Plaid Link Javascript

我正在将 Plaid Link 和 Stripe 集成到一个向导表单流中(很多页面在每个页面上都有很多字段)。用户输入的所有信息都存储在一个全局变量“this.applicationservice.application.applicant”中。用户在此流程中间点击支付验证,Plaid 在调用 Plaid.create(plaidparameters).open() 后弹出一个 IFrame。初始化 Plaid 时,它会擦除​​我的浏览器内存,并且“this.applicationservice.application.applicant”现在未定义。

调用格子初始化时如何避免丢失浏览器内存?

this.http.post('https://localhost:8080/v1/validateach').subscribe(
        response => {
      
          let plaidparameters = {
            token: response.linkToken,
            onSuccess: function(public_token, metadata) {  
             
             // Memory is wiped
             console.log(this.applicationservice.application)

            }
          };
          
          // Works Fine
          console.log(this.applicationservice.application) 

          Plaid.create(plaidparameters).open();
        
        }
      );

所以问题是 onSuccess 回调中 this 的范围没有扩展到回调之外。

我的一位在 JavaScript 方面工作较多的同事提出了以下建议:

this.http.post('https://localhost:8080/v1/validateach').subscribe(
        response => {
          const onSuccess = (public_token, metadata) => { 
            console.log(this.applicationservice.application); 
          };
          let plaidparameters = {
            token: response.linkToken,
            onSuccess,
          };
          // Works Fine
          console.log(this.applicationservice.application) 
          Plaid.create(plaidparameters).open();
        }
      );

并且还补充说:在 this.http.post 的调用之外定义回调函数实际上可能更好,这样它就不会从 plaidparameters 对象继承其范围。