2017-07-14 3 views
1

私は同時性を制限するために喉npmを使用しています。実際に動作しているかどうかテストするにはどうすればいいですか?私のコードのようにうまく動作しますが、どうすればそれが実際に制限されていると確信できますか?javascriptで同時実行制限が機能しているかどうかをテストするにはどうすればよいですか?

これは私のコードです:

const throat = require('throat'); 

readURLsfromFile().then((urls) => { 

    Promise.all(urls.map(
     throat(1, (url, i) => { 
      main(urls[i], i, urls.length) 
     })) 
    ); 
}) 

編集:私はTusharのアイデアを試してみましたが、私はそれを動作させることはできません。多分私は喉を正しく使用していないでしょうか?ここで私がしようとしているコードです:カウンターかの

const throat = require('throat')(1); 
var request = require('request'); 
let counter = 0 

throat(() => { 
    counter++ 
    console.log(counter, 1) 
    main(1).then(() => --counter) 
}) 
throat(() => { 
    counter++ 
    console.log(counter, 2) 
    main(2).then(() => --counter) 
}) 
throat(() => { 
    counter++ 
    console.log(counter, 3) 
    main(3).then(() => --counter) 
}) 


function main(i) { 
    return new Promise((resolve,reject) => { 
     request("http://google.com", (err, response, html) => { 
      resolve() 
     }) 
    }) 
} 
+1

スコープの外側にある変数に実行回数を格納し、 'main'関数を使用して' ++ 'カウンタを実行しているときはいつでも' --'それを実行します。その後、その変数をチェックアウトして、実行中の同時実行数を特定の時間に知ることができます。 –

答えて

1

簡単なセットカウンター

let counter = 0; // set the counter to zero 
const throat = require('throat'); 

readURLsfromFile().then((urls) => { 

    Promise.all(urls.map(
     throat(1, (url, i) => { 
      counter++; 
      console.log(counter, i); // print counter value and i 
      main(urls[i], i, urls.length); 
     })) 
    ); 
}) 

function main (..........) { ....... --counter; } // decrement the counter value once task is completed 

は常に1つのすなわち唯一つのプロセスが一度に実行されて印刷されます。

+0

最終的にはカウンタも '--'する必要があります。 –

+0

@JuanStiza yeah '--'はより良いオプションです。 –

+0

"シンプル"なので、あなたはバグがありました:P – Lansana

関連する問題