1
私は現在、動的な量の約束をつなぐツールを作成しようとしています。ここに私のコードは次のとおりです。空のJavaScriptプロミスを作成する
// NB: This is made using angular's $q, but this applies to anything else
promiseChain = function(array, passedPromise) {
let chain = $q((resolve, reject) => resolve());
for (let elem of array)
chain = chain.then(_ => passedPromise(elem));
return chain;
};
、ここでは、私のテストコードは次のとおりです。
// This returns a timeout wrapped in a promise
let testFn = function(s) {
return $timeout(function() {
console.log(s);
}, 500);
};
let promise = makePromiseChain([1,2,3,4,5,6,7,8,9], testFn);
promise.then(_ => console.log('finished'));
これは動作します。しかし、どのような私をいらいらすることはpromiseChain
の最初の行です:
$q((resolve, reject) => resolve())
があり、空、自己解決の約束を作成するための他の方法ではありません、またはチェーンを開始するには?私はこのコードを使って汚いと感じます。 :/
私たちは通常、このために 'Array.prototype.reduce()'を使用します - http://stackoverflow.com/a/25730751/3478010 –
あなたの 'passedPromise'は関数でなければならず、約束ではなく、' passedPromise(elem ) 'が投げた。 –