路由器应用程序的回调不称为Node.Js
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了路由器应用程序的回调不称为Node.Js,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2378字,纯文字阅读大概需要4分钟。
内容图文
我当前的代码是
resizer.resize(filepath, parsedUrl, fullDestinationPath, function() {
return self.send(response, 200, {'Content-Type': mime.lookup(fullDestinationPath)}, fs.createReadStream(fullDestinationPath));
});
调整大小以
Resizer.prototype.resize = function (filepath, parsedUrl, fullDestinationPath) {
this.read(filepath, parsedUrl, fullDestinationPath);
};
然后调用
Resizer.prototype.read = function(filepath, parsedUrl, fullDestinationPath){
something.then(function (somethingElse) {
// Not relevant for question
}).catch(function (err) {
console.error(err);
});
};
我有一个console.log(1);之后,请阅读第二个代码段,以确保它完全通过它运行.但是返回到我的第一个代码片段不会调用我的回调.我使用回调的原因是,如果不这样做,除非文件非常小,否则将在文件完全保存之前执行发送,因此self.send必须称为AFTER .resize,这就是为什么尝试使用回调.
我已经尝试了多种方法,认为语法错误可能是问题所在,或者它挂在了某个东西上,但我已经证实不是,并且根本就没有调用回调.我犯了某种明显的错误吗?如何使其称为回调?
我已阅读过类似How to make a function wait until a callback has been called using node.js这样的问题/答案,并了解了它的工作原理并以相同的方式实施了它,但是它对我不起作用,我也不知道为什么.感谢您抽出宝贵的时间阅读此内容.
编辑:解决了罗伯茨答案的问题后,我已经删除了回调并将代码更改为此,我使用了Promise而不是回调寿:
片段1:
resizer
.resize(filepath, parsedUrl, fullDestinationPath)
.then(function() {
return self.send(response, 200, {'Content-Type': mime.lookup(fullDestinationPath)}, fs.createReadStream(fullDestinationPath));
});
片段2:
Resizer.prototype.resize = function (filepath, parsedUrl, fullDestinationPath) {
return this.read(filepath, parsedUrl, fullDestinationPath);
};
片段3:
Resizer.prototype.read = function(filepath, parsedUrl, fullDestinationPath){
return Jimp.read(filepath)
.then(function() {
return //tons of irrelevant code
})
.catch(function (err) {
console.error(err);
});
};
解决方法:
Resizer.prototype.resize开头没有回调参数,因此即使您从主代码传递了一个参数,也没有任何作用.
this.read()也是如此:它也没有回调参数.
尝试这个:
Resizer.prototype.resize = function (filepath, parsedUrl, fullDestinationPath, callback) {
this.read(filepath, parsedUrl, fullDestinationPath, callback);
};
和:
Resizer.prototype.read = function(filepath, parsedUrl, fullDestinationPath, callback){
something.then(function (somethingElse) {
callback(null, somethingElse);
}).catch(function (err) {
console.error(err);
callback(err);
});
};
内容总结
以上是互联网集市为您收集整理的路由器应用程序的回调不称为Node.Js全部内容,希望文章能够帮你解决路由器应用程序的回调不称为Node.Js所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。