在下面的.then结构中,我在将图像对象返回到下一个时遇到了问题。然后。
在我返回图像时,它不再可用,因为它超出了初始范围。
有没有正确的方法让它在那里可用,或者我在这里编码?
.then(function(image) {
image.data().then(function(result) {
var base64 = result.toString("base64");
var largeImage = new Parse.File("l.jpg", { base64: base64 });
largeImage.save().then(function(result,image) {
post.set('largeImageUrl',result.url());
return image; /// <-- undefined. How can access the image object here?
});
});
}).then(function(image) {
答案 0 :(得分:4)
原始image
变量不在范围之外;变量对同一块中定义的所有函数都是可见的,即使函数是在其他函数中定义的。也就是说,变量的作用域是它定义的函数。如果在各种函数中存在相同名称的变量,则内部作用域函数将具有该作用域的新引用,并且不再引用外部函数的值。
但是,原始image
变量会被最内层范围内另一个名为image
的变量遮挡,function(result,image)
会传递给largeImage.save().then()
。如果您仍然需要引用外部image
变量,则应将内部image
变量重命名为其他变量。
由于最里面的image
变量是undefined
,它看起来是复制+粘贴的剩余部分,甚至可能不属于function(result,image)
的参数列表