我正在使用vuejs开发一个应用程序。我想在promise中使用它,我希望能够在.then范围内调用函数或数据,为此我使用它。但是如果我在内部执行此操作,那么我会收到错误,即使我使用和箭头函数绑定范围,它似乎也会丢失。我该怎么办?
javascript
methods: {
...mapActions(['setCredentials']),
doLogin() {
console.log('credentials ' + this.username, this.password);
this.$store.dispatch('connect', {
username: this.username,
password: this.password,
});
this.checkResult().then((interval) => {
vm.$f7router.navigate('/favorites');
})
},
checkResult() {
return new Promise(function(resolve) {
var id = setInterval( () => {
let condition = this.$store.state.isConnected
if (condition) {
clearInterval(id);
resolve(id);
}
setTimeout(() => {
clearInterval(id);
reject(id);
}, 20000);
}, 10);
});
}
答案 0 :(得分:2)
在实现承诺时使用箭头功能:
return new Promise((resolve) => { /* ... */ });
答案 1 :(得分:1)
错误是由于上下文绑定造成的。您可以使用箭头功能,因为它们具有自己的否 this
属性(它们依赖于其父函数的this
属性)。
更改return new Promise(function(resolve) {..
到return new Promise((resolve) => {..
答案 2 :(得分:1)
尝试在promise之前创建一个var,如:
var self = this;
然后在promise