我有以下nodejs
代码。客户端首先调用/api/demosounds
,然后调用/api/testsounds
。
var glob = require('glob-fs')({ gitignore: true });
app.get('/api/demosounds',function(req,res){
var demosounds = []
var demosoundlist = glob.readdirSync('src/assets/demosounds/*.wav');
demosounds = demosounds.concat(demosoundlist)
for (var i = 0; i < demosounds.length; i++) {
demosounds[i] = demosounds[i].replace("src/assets/","/api/static/")
}
demosounds = demosounds.sort()
res.json(demosounds)
})
app.get('/api/testsounds',function(req,res){
var listofsounds = []
var folderlist = ['01_sinus','02_pulse_train','03_contour_le','04_contour_fel','05_variable','06_complex_le','07_complex_fel']
for (var x = 0; x < folderlist.length; x++){
var testsoundlist = glob.readdirSync('src/assets/' + folderlist[x] +'/*.wav');
listofsounds = listofsounds.concat(testsoundlist)
}
在执行 glob.readdirSync('src/assets/01_sinus/*.wav')
时,我希望仅获得以 src/assets/01_sinus/
开头的路径然而 testsoundlist
的开头如下:
[ 'src/assets/demosounds/electricity.wav',
'src/assets/demosounds/phone.wav',
'src/assets/demosounds/water.wav',
'src/assets/demosounds/wind.wav',
'src/assets/01_sinus/02_sin1_0065_0.16923076923076924.wav',
'src/assets/01_sinus/04_sin1_0065_0.7692307692307693.wav',
'src/assets/01_sinus/05_sin1_0065_1.0615384615384615.wav',
'src/assets/01_sinus/07_sin1_0165_0.07272727272727272.wav',
我不知道为什么会发生这种情况:(
更新
下面的代码更接近问题
var glob = require('glob-fs')({ gitignore: true });
var folderlist = ['01_sinus','02_pulse_train','03_contour_le','04_contour_fel','05_variable','06_complex_le','07_complex_fel']
for (var x = 0; x < folderlist.length; x++){
console.log((glob.readdirSync('src/assets/' + folderlist[x] +'/*.wav').length))
}
输出这个,就好像glob
会记住之前的glob一样。
49
98
147
196
245
294
343
最佳答案
关于javascript - glob-fs glob.readdirSync 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52414684/