私の約束がnode.js Webアプリケーションでどのように働いているか混乱しています。Node JSアプリケーションで期待どおりに動作しない約束
基本的に私の最初の約束は、pdfとtiffファイルドキュメントをtempフォルダ内の別のpngファイルに変換するスクリプトを実行していることです。次に、2番目の約束は、pngを基底64に変換して動的配列に格納するスクリプトを実行します。私はこのようなものとして出力を得る約束消費した場合:
{ title: '' }
{ fieldname: 'upl',
originalname: 'multipage_tiff_example.tif',
encoding: '7bit',
mimetype: 'image/tiff',
destination: 'uploads/',
filename: 'multipage_tiff_example.tif',
path: 'uploads\\multipage_tiff_example.tif',
size: 810405 }
Finished Conversion and Encoding to Base 64!
undefined
POST/302 181.742 ms - 60
GET /ViewDoc 304 8.564 ms - -
Converted!
を我々は(arrayPicsは、[4])出力は未定義として出ているにconsole.logことがわかります。しかし、コードをデバッグしているときに同じコードを実行すると、次のような結果が得られます。
Debugger listening on [::]:54395
Server is listening on: 3000
GET/304 35.525 ms - -
{ title: '' }
{ fieldname: 'upl',
originalname: 'multipage_tiff_example.tif',
encoding: '7bit',
mimetype: 'image/tiff',
destination: 'uploads/',
filename: 'multipage_tiff_example.tif',
path: 'uploads\\multipage_tiff_example.tif',
size: 810405 }
Finished Conversion and Encoding to Base 64!
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAABGdBTUEAAL.......
Converted!
ここで、console.log(arrayPics [4])の出力が得られることがわかります。これは、なぜ私のコードがそのように動作しているのか混乱している部分です。私ができる場合、私は感謝される
module.exports = {
convert: function pdfConverter(req)
{ let check = true;
gm(req.file.path).write('Images/output.png', (err)=>
{
if(err)
{
console.log(err);
reject(err);
check = false;
}
else
{
console.log("Converted!");
}
});
return check;
}
};
base64エンコード
module.exports = {
encoder: function base64_encoder(arrayPics)
{
let files = fs.readdirSync('Images/');
for(let i in files)
{
//console.log('C');
arrayPics.push(base64Img.base64Sync('Images/output-' + i + ".png"));
}
return true;
}
};
:
ドキュメントコンバータのSCRIPT:私はまた私の約束はあなたの参照のために使用している私のスクリプトを掲載していますなぜこれが起こっているのか、自分のコードに加えることができる変更についていくつかの提案を得てください。
'new'プロンプトを' convert'関数内に置く必要があります – Bergi