gpt4 book ai didi

promise - ES6 和 promise 中的变量范围

转载 作者:行者123 更新时间:2023-12-03 15:05:24 25 4
gpt4 key购买 nike

不确定我在这里缺少什么。

我需要得到 data 的输出进入 this.contact .现在,我正在使用静态类变量,但必须这样做似乎很脏。

export class contactEdit {
static t; // static class var
constructor() {
this.id = null;
this.contact = null;
contactEdit.t = this;
}

activate(id) {
this.id = id;
let contact = this.contact; // scoped version of class var
return dpd.contacts.get(id).then(function(data) {
console.log(data);
contactEdit.t.contact = data; // this works
contact = data; // this doesn't
});
}
}

通常我会创建一个 var contactactivate()功能(它在 Chrome 控制台中工作),但这似乎在 ES6 中不起作用。

Chrome 控制台:
var c = null;
undefined
c;
null
dpd.contacts.get('a415fdc8f5a7184d').then(function(data) {
c = data;
});
Object {}fail: (n)then: (e,t)__proto__: Object
c;
Object {firstName: "John", lastName: "Doe", id: "a415fdc8f5a7184d"}

最佳答案

你需要做两件事。首先,使用箭头函数,其次,使用`this.contact = data;

activate(id) {
this.id = id;
return dpd.contacts.get(id).then(data => {
console.log(data);
this.contact = data;
});
}

您使用箭头函数是因为它处理 JavaScript 的“ this”问题,其中 this 指的是函数的词法范围,而不是您当前所在的对象。使用箭头函数确保 this外箭头函数同 this在箭头函数里面。

您需要使用 this.contact因为 contact是类的实例属性。

关于promise - ES6 和 promise 中的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com