如何在获取调用函数返回的内容时将局部变量传递给回调?

马丁

我在循环中有一个异步回调问题。我对Window的一个文件对象调用了一个异步函数,以获取有关它的更多信息(getImagePropertiesAsync()),并将这些信息保存到数据库中,以加快进一步的访问速度。我需要该函数返回的值以及i我调用时所具有的值getImagePropertiesAsync()

for (var i = 0; i < picsGiven.length; i++) {
  picsGiven[i].properties.getImagePropertiesAsync().then(function(prop){
    settings.values["geoLat" + i2] = props.latitude;
    settings.values["geoLon" + i2] = props.longitude;
    settings.values["geoDate" + i2] = props.dateTaken;
    i2++;
  })
}

由于异步执行,所以三个值对以错误的顺序保存。当我写这篇文章的时候,我已经担心这个问题了。下次尝试。

for (var i = 0; i < picsGiven.length; i++) {
  picsGiven[i].properties.getImagePropertiesAsync().then((function(prop, i2){
    settings.values["geoLat" + i2] = props.latitude;
    settings.values["geoLon" + i2] = props.longitude;
    settings.values["geoDate" + i2] = props.dateTaken;
  })(undefined, i))
}

现在,我i正确了,但props未定义。(逻辑上)。

保存时如何i正确获取props提前致谢!

戴维·史密斯

(未经测试)是这样的:

function mk_handleImagePropertiesAsync(ival) {
  return function(prop) {
    settings.values["geoLat" + ival] = prop.latitude;
    settings.values["geoLon" + ival] = prop.longitude;
    settings.values["geoDate" + ival] = prop.dateTaken;
  }
}

for (var i = 0; i < picsGiven.length; i++) {
  picsGiven[i]
    .properties
    .getImagePropertiesAsync()
    .then(mk_handleImagePropertiesAsync(i));
}

范围问题!for循环不会像C / C ++中那样引入新的块范围。循环中的内联函数将始终获得相同的i2值(其初始值!)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将局部变量传递给 lambda 函数?

将附加变量传递给内部调用的回调函数

如何将变量从回调函数传递给函数调用?

如何在JavaScript中将变量传递给回调函数

如何将变量传递给嵌套的回调函数

将局部变量传递给信号处理函数

PowerShell:将局部变量传递给函数

将局部变量通过类传递给函数

如何在Java / Android中的回调函数中设置局部变量?

Javascript:如何在回调函数中访问局部变量?

如何将局部变量值从函数传递给 addEventListener 函数?

如何将局部变量传递给远程“调用命令”?

如何将指针传递给局部变量?

当函数具有同义局部变量时,如何在函数中获取全局变量?

调用方法时如何传递所有局部变量

Rust:无法在返回值中引用局部变量 - 但“局部变量”被传递给调用者

如何将函数中的局部变量作为默认值传递给 R 中的嵌套变量?

如何将“此”对象传递给使用协议的函数中调用的回调函数

将变量传递给 jquery 的 $.post done 回调函数

将父范围中的变量传递给回调函数

将额外的变量传递给回调函数

在回调函数中访问局部变量

在回调函数中使用局部变量

Rails-如何将局部变量传递给共享文件夹中的局部变量?

如何更改返回局部变量的函数

函数局部变量的返回如何工作?

在使用sudo将命令和局部变量传递给ssh时,如何避免引用和转义?

如何在Node.js中将变量传递给预定义的回调函数

如何将变量传递给Page Method Success回调函数