2017-09-06 6 views
0

私はpromisesとnpm "streamToPromise"パッケージに問題があります。 まずは、私はさまざまな機能を持っています。これらの機能がすべて解決されたら、最後の機能を呼びたいと思います。しかし、私のコードで - それだけのも、私は今、数週間のための約束を理解しようとしてきたが、私にはないいくつかのエラーが常に存在しているJS ES6の約束が理由なしに呼び出されています

var func1 = new Promise(function(resolve,reject){ 
// get's executed without reason 
    // do something 
    if(var1 && var2){ 
    resolve(true); 
    } 
}); 

var func2 = new Promise(function(resolve,reject){ 
    // get's executed without reason 
    // do more 
    if(var3 && var4){ 
    resolve(true); 
    } 

}); 

streamToPromise(stream).then(function (operation) { 
    // do more 
// doesn't get executed 
    if(varX && varY){ 
    func1() 
    .then(func2) 
    .then(func3) 
    .then(funcFinal) 
    .catch(function (error) { 
     // console log error 
    } 
    } 
} 

「streamToPromise」内部iffsを経由せずに実行しますわかる。本当に助けていただければ幸いです!

答えて

1

func1func2など、彼らは機能していない、彼らはあなたが関数func1などがそれらを

var func1 = function() { 
    return new Promise(function(resolve, reject) { 
     // get's executed without reason 
     // do something 
     if (var1 && var2) { 
      resolve(true); 
     } 
    }); 
} 

var func2 = function() { 
    return new Promise(function(resolve, reject) { 
     // get's executed without reason 
     // do more 
     if (var3 && var4) { 
      resolve(true); 
     } 
    }); 
} 

streamToPromise(stream).then(function(operation) { 
    if (varX && varY) { 
     func1() 
      .then(func2) 
      .then(func3) 
      .then(funcFinal) 
      .catch(function(error) { 
        // console log error 
       } 
      } 
    } 
}); 
を機能させる、その後、機能になりたい、直ちに、そのため new Promiseエグゼキュータ内のコードはすぐ

と呼ばれてきた「作成」されている約束されています

+0

素晴らしい - 実用的な例のおかげで! – neoislife

2

func1およびfunc2は実際には機能しません。彼らはあなたがすぐに作る約束です。

おそらくそれらを約束を返す関数にしたいと思うでしょう。

また、電話してその結果をthen()に渡すことも望ましくありません。関数自体を渡したいとします。

+0

私はそれを試みました - しかし、問題はそれがこの点に至ることさえありません。関数は前に呼び出されています。これは、私がvarsとしてPromise関数を作成していて、初期化されるためですか? – neoislife

+0

@TimoReichert:あなたは何を試しましたか? 2つの異なるミスがあり、それぞれがこの問題を引き起こします。 – SLaks

+0

私は関数の名前に関数を変更しました。 私はこれらの約束を事前に作成することはできませんか?代わりがありますか?私はちょうどそれらの上に機能と約束を作成する必要がありますか?申し訳ありませんが、これは愚かに聞こえるかもしれませんが、私は約束が本当に働くかを理解するのは本当に苦労しています。 – neoislife

0

理由は(func2の中でそのための

.then(function() { 
return func2(); 
}).then(...) 

この方法を使用)し、FUNC3()のいずれか

と呼ばれている方法の方法であり、あなたは(プロミスオブジェクトに

を返すか、使用する必要がありますパテントなし)

.then(func2).then(func3) 
+0

私はそれを試みました - しかし、問題はそれがこの点に至らないことです。関数は前に呼び出されています。これは、私がvarsとしてPromise関数を作成していて、初期化されるためですか? – neoislife

関連する問題