我如何等待函数返回。在继续我的代码之前,有没有办法等待函数完成执行。我想在继续之前等待createThumbnail函数返回缓冲区。谢谢。
createThumbnail: function(imagepath){
Jimp.read(imagepath).then(function (lenna) {
lenna.resize(256, 256) // resize
.quality(60) // set JPEG quality
// .greyscale() // why on earth would i need black and white
.getBuffer(Jimp.MIME_JPEG,function(err, buffer, callback){ // I have other Options like png etc.
return buffer;
})
}).catch(function (err) {
console.error(err);
});
},
然后在另一个文件中我调用此函数
var thum_image = functions_api.createThumbnail(Imagepath);
console.log(thum_image); // its null
答案 0 :(得分:1)
您可以使用回调。
回调是一旦完成某些事情就会执行的功能,在你的情况下最终会加载图像。
不是只带一个参数,而是在加载图像后调用另一个函数:
createThumbnail: function(imagepath, callback){
Jimp.read(imagepath).then(function (lenna) {
lenna.resize(256, 256) // resize
.quality(60) // set JPEG quality
// .greyscale() // why on earth would i need black and white
.getBuffer(Jimp.MIME_JPEG,function(err, buffer, callback){ // I have other Options like png etc.
callback(buffer);
return buffer;
})
}).catch(function (err) {
console.error(err);
});
},
然后你可以调用像
这样的函数var thum_image = functions_api.createThumbnail(Imagepath, function (image) {
console.log("Loaded!", image);
});
答案 1 :(得分:1)
您已将<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>
与promise
包一起使用。基于此,您也可以在代码中使用promise
Jimp
答案 2 :(得分:-1)
在q中,您可以执行以下操作:
var q = require('q')
createThumbnail: function loadImage(imagepath) {
var deferred = q.defer();
Jimp.read(imagepath).then(function (lenna) {
lenna.resize(256, 256) // resize
.quality(60) // set JPEG quality
// .greyscale() // why on earth would i need black and white
.getBuffer(Jimp.MIME_JPEG,function(err, buffer, callback){ // I have other Options like png etc.
deferred.resolve(buffer)
})
}).catch(function (err) {
deferred.reject(err)
});
}
//WHEREVER YOU WANT THE BUFFER
createThumbnail(imagepath).then(function(buffer) {
console.log(buffer)
}).catch(function(error) {
console.log(error)
}).done();