我遇到了callback
功能
project.prototype.getFolder = function(path){
this.imagePath;
var instance = this;
function getImage(image, callback) {
var it = function(i){
codes.....
//I am sure variable image is not null
callback(image);
codes....
}
}
// function to get the image
getImage(image, function (img) {
instance.imagePath = img;
});
//it outputs undefined...
console.log(this.imagePath )
}
我想在this.imagePath
函数中将值赋给callback
,但我的情况似乎是undefined
。
我确信我传递了有效的image
变量,但我仍然没有得到任何结果。任何人都可以提供小费吗?非常感谢!
答案 0 :(得分:5)
您的代码可能是异步的,因此回调函数需要一段时间才能运行。在这段时间内,虽然您的返回值仍未设置,但您正在尝试打印变量。
基本上即使代码本身是在回调之后编写的,它也可以在它之前运行。
这可能是您的问题,因此您应该尝试仅在调用回调后访问此值:
// function to get the image
getImage(image, function (img) {
instance.imagePath = img;
console.log(instance.imagePath);
});
修改强>
为了将异步参数作为getFolder的返回值返回,您应该将回调函数传递给getFolder;
示例:强>
project.prototype.getFolder = function(path, callback){
...
...
if (typeof(callback) == "function"){
callback(this.imagePath);
}
}
用法:
project.getFolder(path,function(imagePath){
console.log(imagePath);
});
答案 1 :(得分:0)
您指定了imagePath,但尝试访问validImagePath。试试:
console.log(this.imagePath)
我不明白你为什么一开始就有this.imagePath;
。可能你想写:
this.imagePath = path;