我意识到可能有10种方法可以做到这一点,我通常会通过一些笨拙的方式来实现它 - 但是我希望得到一些关于"清洁"从promise回调中更新对象文字中的值的方法。
我目前的用例是:
let groups2 = {
groupsList: [],
updateGroups: () => {
return axios({
'url': 'https://gitlab.com/api/v3/groups?per_page=500',
'method': 'GET',
'headers': {
'private-token': GITLAB_API_PRIVATE_TOKEN,
'cache-control': 'no-cache'
}
})
.then(function (response) {
console.log(response);
groups2.groupsList = response.data;
})
.catch(function (error) {
console.log(error);
});
}
}
这有效,但感觉不好?"参考" groups2"特别是从内部本身(在这种情况下的回调中)。基本上我想要一个单例,它可以通过可能包含promise的函数对它自己的值进行操作。我正在寻找有关如何做的更好的想法。
答案 0 :(得分:1)
是的,如果您在对象文字中使用箭头功能,它将不会绑定"这个"对象。所以在es2015中你可以使用shorthand syntax for method declarations on object literals。但是你 希望在.then
方法中使用箭头语法---它会绑定"这个"在附上的背景下:
let groups2 = {
groupsList: [],
updateGroups() { // Change this
return axios({
'url': 'https://gitlab.com/api/v3/groups?per_page=500',
'method': 'GET',
'headers': {
'private-token': GITLAB_API_PRIVATE_TOKEN,
'cache-control': 'no-cache'
}
})
.then((response) => { // and this
console.log(response);
this.groupsList = response.data; // and use the "this" variable here
})
.catch(function (error) {
console.log(error);
});
}
}