Javascript 无法在承诺内的setInterval内使用此选项
我正在用vuejs开发一个应用程序。我希望在承诺中使用它,我希望能够调用.then范围内的函数或数据,为此我使用this。但是如果我在中执行此操作,那么我会得到一个错误,即使我使用and arrow函数绑定范围,它似乎也会丢失。我能做什么Javascript 无法在承诺内的setInterval内使用此选项,javascript,vue.js,promise,Javascript,Vue.js,Promise,我正在用vuejs开发一个应用程序。我希望在承诺中使用它,我希望能够调用.then范围内的函数或数据,为此我使用this。但是如果我在中执行此操作,那么我会得到一个错误,即使我使用and arrow函数绑定范围,它似乎也会丢失。我能做什么 javascript methods: { ...mapActions(['setCredentials']), doLogin() { console.log('credentials ' + this.username, t
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);
});
}
在说明您的承诺时使用箭头功能:
return new Promise((resolve) => { /* ... */ });
在说明您的承诺时使用箭头功能:
return new Promise((resolve) => { /* ... */ });
该错误是由上下文绑定引起的。您可以使用Arrow函数,因为它们有自己的否
此属性(它们依赖于其父函数的此属性)
更改返回新承诺(函数(解析){..
若要返回新承诺((resolve)=>{..
错误是由于上下文绑定造成的。您可以使用箭头函数,因为它们没有自己的此属性(它们依赖于其父函数的此属性)
更改返回新承诺(函数(解析){..
要返回新承诺((resolve)=>{..
请尝试在承诺之前创建一个var,如:
var self=this;
然后在承诺中使用self而不是此尝试在承诺之前创建var,如:
var self=this;
然后在承诺中使用self而不是this谢谢,但这次我在设置超时方面遇到了问题。即使我使用箭头函数,也会在设置超时中给出拒绝的未定义错误,请使用该函数。拒绝,或仅使用此函数。拒绝我知道我需要在函数签名中定义拒绝,谢谢。谢谢,但这次我对setTimout有问题。即使我使用箭头函数,setTimout内的reject也会给出未定义的错误,请使用that.reject,或仅使用this.reject。reject我发现我需要使用函数签名中的resolve来定义reject,谢谢。