Javascript 无法在承诺内的setInterval内使用此选项

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

我正在用vuejs开发一个应用程序。我希望在承诺中使用它,我希望能够调用.then范围内的函数或数据,为此我使用this。但是如果我在中执行此操作,那么我会得到一个错误,即使我使用and arrow函数绑定范围,它似乎也会丢失。我能做什么

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,谢谢。