SyntaxError: Unexpected token { в return
Здравствуйте. Стоит задача: найти все файлы в директории и создать массив с датами последней модификации. Вот код:
var fs = require( 'fs' ); var path = __dirname; var filesModified = []; fs.readdir( path, function( err, files ){ if( err ) console.log( err ); return new Promise( resolve, reject ){ for ( var i = 0; i < files.length ; i++ ){ var file = path + '/' + files[i]; fs.stat( file, function( err, stats ){ filesModified.push( stats.mtime ); } ); } resolve( 'End' ); } } ).then( function( end ){ console.log( filesModified ); console.log( end ); } ).catch( function( err ){ console.log( err ); } ); Возникает вышеописанная ошибка. Чего ему фигурные скобки не нравятся? Версия ноды 4.2.1 |
Поначалу хотел сделать через mz/fs
var fs = require( 'mz/fs' ); var path = __dirname; var filesModified = []; fs.readdir( path, function( err, files ){ if( err ) console.log( err ); for ( var i = 0; i < files.length ; i++ ){ var file = path + '/' + files[i]; fs.stat( file, function( err, stats ){ filesModified.push( stats.mtime ); } ); } } ).then( function(){ console.log( filesModified ); } ); но нода ругается на метод then(). Что-то в новой ноде нихера не работает :( |
Sigizmund2012,
а должно? В спецификации метод readdir разве возвращает обещание? Если нет, то и не удевительно, что Нода ругается. |
Цитата:
|
Попробовал так сделать:
var fs = require( 'fs' ); var path = __dirname; var filesModified = []; fs.readdir( path, function( err, files ){ if( err ) console.log( err ); var promise = new Promise( resolve, reject ){ for ( var i = 0; i < files.length ; i++ ){ var file = path + '/' + files[i]; fs.stat( file, function( err, stats ){ filesModified.push( stats.mtime ); } ); } resolve( 'End' ); } return promise; } ).then( function( end ){ console.log( filesModified ); console.log( end ); } ).catch( function( err ){ console.log( err ); } ); но Нода всё равно на фигурные скобки ругается. Синхронно-то всё работает, но мне на промисах сделать надо. |
Всё-таки получилось сделать. Как обычно, причина не в Ноде, а в прокладке между сиденьем и монитором :)
var fs = require( 'fs' ); var path = __dirname; var filesModified = []; var promise = new Promise( createArrayModified ); promise.then( arrayComplete ).catch( errorHandler ); function createArrayModified( resolve, reject ){ fs.readdir( path, readFilesModified ); function readFilesModified( err, files ) { var checkArrays; if ( err ) console.log( err ); for ( var i = 0; i < files.length; i++ ) { var file = path + '/' + files[i]; fs.stat( file, function ( err, stats ) { filesModified.push( stats.mtime ); } ); } checkArrays = setInterval( function(){ if( filesModified.length === files.length ){ resolve(); clearInterval( checkArrays ); } } ,100 ); } } function arrayComplete(){ console.log( filesModified ); } function errorHandler( err ){ console.log( err ); } |
Часовой пояс GMT +3, время: 01:26. |