[英]writing a while loop in node.js
在 C# 中,我會這樣做 -
double progress = 0;
while (progress < 100)
{
var result = await PerformAsync();
progress = result.Progress;
await Task.Delay();
}
一個不錯的簡單 7 行代碼。 node.js 中的等價物是什么? 基本上需要一個檢查條件的 while 循環,直到滿足該條件,睡眠然后執行一些異步操作。
當您以 Node.js 的方式思考時,會發生根本性的范式轉變。
正如在節點中所寫和所說的“除了你的代碼之外,一切都並行運行”。 JS 是單線程的,因此如果你讓那個線程 sleep ,一切都會阻塞。
但是,如果您以自然的方式為您的問題建模,那就是設計一個異步操作,該操作需要時間來運行,並在完成后讓它通知您相同的情況。 而不是你等待它完成。
這將設計您的異步 (performAsync) 操作以發出事件,然后在該事件發生時提供要執行的回調。
所以它更加緊湊和自然。 你的代碼可能看起來像
performAsync().on('result',function cb () {// do what pleases you});
Node.js,如您所料,它是一個 javascript 文件。 所以你可以使用javascript代碼。 但是對於您應該使用什么,有一些不同之處。 例如; 使用 Node.js,您可以同時使用同步;
var page = 2;
var last_page = 100;
(function loop() {
if (page <= last_page) {
request("/data?page=" + page, function (error, response, body) {
if (!error && response.statusCode == 200) {
store_data(body)
}
page++;
loop();
});
}
}());
在這個例子中,我們在 loop() 中調用 loop() 函數,所以不是在技術上而是在實際中我們使用循環。
異步示例: node.js 中的異步 for 循環
看看https://github.com/caolan/async ,它有很多用於此類同步任務的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.