【发布时间】:2016-01-07 16:16:16
【问题描述】:
所以我遇到了以下问题:我有一个带有用于加密字符串的密钥的数组。 for 循环遍历数组,使用当前密钥加密字符串,然后将加密的字符串推送到新数组中。代码如下:
var enc_gmessages = ['start'];
for(i = 0; i < pubkeys.length; i++) {
var pubkey = pubkeys[i];
if(pubkey != 'no' && pubkey != null) {
var publicKey = openpgp.key.readArmored(pubkey);
openpgp.encryptMessage(publicKey.keys, content).then(function(pgp_gmessage) {
//string encrypted successfully
console.log(pgp_gmessage);
enc_gmessages.push(pgp_gmessage);
}).catch(function(error) {
console.log('error');
});
}
}
alert(enc_gmessages);
如果存在有效的公钥,则字符串会成功加密(并登录到控制台),但数组仅包含 for 循环后的“开始”元素。有人可以指出我做错了什么吗?
【问题讨论】:
-
加密例程是异步的。该代码使用网络工作者(不确定它在 Node 中的作用)。因此,
for循环在加密之前完成。 -
你需要把它封装在一个返回
Promise的函数中。 -
如果你移动警报会发生什么(enc_gmessages);到您的 enc_gmessages.push(pgp_gmessage); 之后的行。 ?
-
@Tokn 那里已经有一个
console.log()呼叫。 -
@Pointy 我看不到
标签: javascript loops for-loop