亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript - Node.js中輸出順序為什么和預期的不一樣呢?

瀏覽:69日期:2023-09-07 18:37:29

問題描述

考察下面的代碼,它用于用于輸出指定目錄下的文件

var fs=require(’fs’);function sleep(numberMillis) { //sleep方法,暫停numberMillis毫秒 var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } }fs.readdir(__dirname,function(err,files){ //文件讀取方法 console.log(’’); if(!files.length){console.log(’找不到文件 n’); }else{console.log(’文件如下:’);function file(i){ var filename=files[i]; fs.stat(__dirname+’/’+filename,function(err,stat){if(stat.isDirectory()){ console.log(’ ’+i+’文件夾:’+filename+’/...’);}else{ console.log(’ ’+i+’文件:’+filename+’’);} }); i++; //sleep(1000); //。。。。。。。。######暫停1sif(i==files.length){console.log(’輸出完畢’); }else{file(i); //否則遞歸調用 }}file(0);//開始執行 }});

上述代碼輸出的結果我不能理解,按照這個程序設計的邏輯,應該先是把目錄下所有文件都列出來,然后計數器i==files.length后才輸出“輸出完畢”這個終結語。

javascript - Node.js中輸出順序為什么和預期的不一樣呢?javascript - Node.js中輸出順序為什么和預期的不一樣呢?

如上圖所示,不但“輸出完畢”這個終結語最先輸出,而且打印順序完全是錯亂的,多次運行的打印順序也不穩定。

我在想是不是異步調用有時間差,所以將上述代碼sleep(1000)注釋部分去掉,但是結果依然與我所預期不一致:“文件如下”提示語先輸出,此后停止1s后,后續語句幾乎同時出,沒有停頓,并且“輸出完畢”這個終結語依然第一個被打印

綜上所述,我想知道的是

為什么打印結果不穩定,為什么“輸出完畢”這個提示語首先被輸出?

為什么加上sleep(1000)這個暫停語句后,只有一開始停了1s,后面不再暫停而是同時輸出?

如何解決這個問題,即如何在修改盡可能少的情況下讓“輸出完畢”這個提示語最后輸出?

謝謝各位大佬賜教!

問題解答

回答1:

fs.stat是異步操作,所以你的輸出文件信息都是異步執行的,“輸出完畢”肯定先打印的。想同步可以用這個https://nodejs.org/docs/lates...

在sleep里加個console.log(’sleep’)看是不是 只輸出一次?

如果你想保證輸出文件信息之后才輸出“輸出完畢”,第一點里我提到的用fs.statSync估計修改比較少吧

回答2:

根據@Dont的回答,確實是異步方法調用的原因,因為fs.stat的回調函數是在事件輪詢中被調用,它一般在主程序運行間隙時候被調用,被調用時間和順序不定。使用statSync方法可以實現同步:

(function file(i){ var filename=files[i]; function read(stat){if(stat.isDirectory()){ console.log(’ ’+i+’ 033[36m 文件夾:’+filename+’/...033[39m’);}else{ console.log(’ ’+i+’ 033[36m 文件:’+filename+’033[39m’);} }; read(fs.statSync(__dirname+’/’+filename)); i++; ................

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 777奇米影视笫四色88me久久综合 | 经典三级一区二区三区视频 | 日韩综合| 中文字幕日本在线视频二区 | 国产aⅴ一区二区三区 | 亚洲成人在线网站 | 黄色视频一级毛片 | 国产2021成人精品 | 国产欧美日韩综合一区二区三区 | 手机看片1024久久香蕉 | 欧美极品妇xxxxxbbbbb | 欧美一级性 | 成人免费久久精品国产片久久影院 | 婷婷 综合 | 在线观看免费黄视频 | 国产小视频免费 | 9191国语精品高清在线最新 | 亚洲欧美国产一区二区三区 | 丰满大乳女啪啪中文字幕 | 精品网站 | 国产性大片黄在线观看在线放 | 国产精品一区91 | 欧美一区福利 | 国产爽片在线观看 | 国产自产自拍 | 亚洲国产精品欧美综合 | chinese调教在线播放 | 视频一本大道香蕉久在线播放 | 乱淫毛片 | 香蕉久久国产精品免 | 台湾一级毛片永久免费 | 国产精品合集一区二区三区 | 欧美成人高清乱码 | 色狠狠婷婷97 | 久综合网| 一级特黄aaa大片 | 黄色一级片免费在线观看 | 欧美日韩在线精品成人综合网 | 俄罗斯小屁孩cao大人免费 | 欧美一级黄色录像片 | 久久黄色大片 |