2017-10-31 5 views
2

オブジェクトを引数として取る簡単なパイプライン関数を作成しました。オブジェクトは次の関数に返されます。非同期なパイプライン関数を作成して関数を待つことができます

関数自体は、for ofループ内で待たなければなりません。私はこれを行う方法の例を見つけようとしましたが、成功していない複数の記事を読んだことがあります。私はパイプラインfunctionの前でasyncを追加すると、私は次のエラーを取得する:ここで

TypeError: pipeline(...) is not a function 

は私のコードは次のようになります。パイプラインの作成

async function pipeline(...funcs) {... // Throws the error 

function pipeline(...funcs) { 
    return function(val) { 
    let lastResult 
    for (let func of funcs) { 
     console.log(func) 
     lastResult = func(lastResult || val) 
    } 
    return lastResult 
    } 
} 

const pipe = pipeline(
    function1, 
    function2, 
    function3 
)(object) 
+1

* which * 'function'キーワードの前に' async'を入れましたか? – Bergi

+0

パイプラインを非同期関数に変換しようとしましたか? – TKoL

+0

'パイプライン'に 'await'を入れないことをお勧めします。約束を返す関数を明示し、 'function2'の代わりに' p => p.then(function2) 'のようなものを渡してください。 – Bergi

答えて

2

は非同期ではなく、それを実行してはなりません。

function pipeline(...funcs) { 
    return async function(val) { 
    let lastResult 
    for (let func of funcs) { 
     console.log(func) 
     lastResult = await func(lastResult || val) 
    } 
    return lastResult 
    } 
} 
+0

これで完全に解決されました。ありがとうございました。 8分で正しいとマークします。 :) – Kainan

関連する問題