不知道我在這裏失蹤。ES6和承諾內的變量範圍
我需要得到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 contact
的activate()
功能(它適用於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 =數據;',而不是'接觸=數據;'? – trincot
'static t;'不是ES6。你使用打字稿還是什麼? – Bergi
無論如何,您都不應該將承諾結果存儲爲實例屬性。如果需要,請保存承諾。 – Bergi