我正在集成与格子链接和条带到一个向导表单流(许多页面上的每个页面上的许多字段)。用户输入的所有信息都存储在全局变量"this.applicationservice.application.applicant".中用户在此流程中间点击支付验证,其中Plaid在调用Plaid.create(plaidparameters).open()后弹出一个IFrame。当Plaid被初始化时,它会擦除我的浏览器内存,并且"this.applicationservice.application.applicant“现在是未定义的。
如何避免在调用Plaid初始化时丢失浏览器内存?
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();
}
);发布于 2021-03-02 11:09:53
所以问题是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对象继承其作用域。
https://stackoverflow.com/questions/66425326
复制相似问题