2017-09-15 29 views
2

私はこれらの約束事と混同しており、なぜ私が約束を別の約束に返せないのか理解できません。私の問題は、私は、保存機能を持って、次のとおりである:JavaScript/Node.JS別の約束を返す約束を返す

save(Driver) { 
    this.exists(Driver).then(exist => { 
     if(exist) { 
      return new Promise(function (resolve, reject) { 
       if (exist === true) { 
        resolve(true); 
       } else if (exist === false) { 
        resolve(false); 
       } else { 
        reject(err); 
       } 
      }); 
     } 
    }); 
}; 

私は以下のように、その関数を呼び出ししようとすると、それは、あるのと同じくらい簡単:

save(driver).then(this.common.saveSuccess(res)) 
      .catch(this.common.noSuccess(res)); 

私はというエラーを取得していますCannot read property 'then' of undefinedと私は約束を返すように私はなぜ理解できません。 ありがとうございます

+0

あなたが '')(セーブから何も返されませんでした。 '返すthis.exists(ドライバ).then(...'また、 'result'はどこに定義されていますか? – Ryan

+0

はい私はコードを簡素化しようとしていましたが、テキストを変更するのを忘れてしまった、私はそれを修正しました –

+0

[編集] – Ryan

答えて

1

saveの機能は非常に複雑です。あなただけのthis.exists関数から結果(約束を)返し、ここで、ネストされた約束を必要としない:

save(Driver) { 
    return this.exists(Driver); 
}; 

はまた、あなたは間違ってこの関数を使用します。 save機能を使用すると、thenコールバックでこの値を検証し、可能なエラーのcatchコールバックを使用する必要があるので、trueまたはfalse値で解決することができます。

save(driver) 
    .then(exists => { 
    if (exists) { 
     this.common.saveSuccess(res); 
    } else { 
     this.common.noSuccess(res) 
    } 
    }) 
    .catch(err => // process error here);