0
こんにちは、約束したループで約束を使う正しい方法
私はノードプロジェクトの初期化にPromiseを使用します。
gitリポジトリのすべてのブランチにファイルの名前をMongoDbに挿入したいとします。
私はrepoを操作するためにnodegitを使用していますが、すべてのnodegitメソッドでプロミスが返されます。しかし、私はすべてのファイルとブランチ名を取得するために、すべてのブランチリファレンスをループする必要があります。
その後、次の約束事でデータベースに挿入するために配列を準備することができます。
コードのようになります。
// List all branchs
.then((branchs) => {
let promises = [];
let allBranchFiles = [];
branchs.map((branch) => {
let q = repo.checkoutBranch(branch, config.checkoutOpts)
.then(() => repo.getCurrentBranch())
.then((ref) => {
return new Promise((resolve, reject) => {
fs.readdir('./myRepo/', (err, files) => {
files.map((file) => {
allBranchFiles.push({fileName: file, branch: branch});
});
resolve(allBranchFiles);
});
});
});
promises.push(q);
});
return Promise.all(promises);
})
2つの方法により、そのコードの仕上げ:
- まず:
{ Error: the index is locked; this might be due to a concurrent or crashed process at Error (native) errno: -14 }
私はこのリポジトリにgitを使用しているプロセスはありません。
- 第二:
私のすべてのファイルは、「ブランチ」に同じ値を取得しますが、彼らは別のbranchsです。
私を助けてくれてありがとう!
Cya。
は、ベストプラクティスのためにその深くネストされた機能を削減してみてください。 –
私は好きですが、私はどのように見ることができません。 Nodegitは非常に制限されています... – fromScratch
これは多くのコードです。期待どおりに動作しない場所に絞り込んでください。 – ktilcu