如何在执行其余代码之前等待图像下载



我希望你做得很好,所以我已经使用nodejs有一段时间了,我仍然习惯异步函数和其他东西,所以我使用axios从服务器下载一个图像,等待图像下载,然后使用该图像在wordpress网站上发布帖子,这个代码有点棘手,因为它可以处理几个帖子,但在其他帖子中,它不会等待图片完全下载,但它只是在没有图片的情况下共享帖子。

axios.get(encodeURI(img), {responseType: "stream"} )  
.then(response => {  
// Saving file to working directory  
response.data.pipe(fs.createWriteStream("images/"+title.replace(/[^x00-x7F]/g, "")+".png"));
await sleep(3000);
var wp = new WPAPI({
endpoint: 'XXXXX/wp-json',
// This assumes you are using basic auth, as described further below
username: 'XXXX',
password: 'XXXXX'
});
wp.posts().create({
title: title,
content: index,
categories: [3,9,2],
status: 'publish'
}).then(function( post ) {
// Create the media record & upload your image file
var filePath = "images/"+title.replace(/[^x00-x7F]/g, "")+".png";
return wp.media().file( filePath ).create({
title: title,
// This property associates our new media record with our new post:
post: post.id
}).then(function( media ) {
console.log( 'Media uploaded with ID #' + media.id );
return wp.posts().id( post.id ).update({
featured_media: media.id
});                           
});
});
})  
.catch(error => {  
console.log(error);  
});  

所以我想问,在分享帖子之前,我如何才能完全等到图片出现在文件夹中,谢谢。

而不是

response.data.pipe(fs.createWriteStream("images/"+title.replace(/[^x00-x7F]/g, "")+".png"));
await sleep(3000);

使用

response.data.pipe(fs.createWriteStream("images/"+title.replace(/[^x00-x7F]/g, "")+".png"))
.on('error', () => {
// log error and process 
})
.on('finish', () => {
// publish a post with image on a wordpress website,
});

附言:尝试制作模块化代码,

最新更新