当我调用一个调用AWS脚本并等待AWS响应的第二个函数时,如何使.each循环迭代等待?
这是我的.each循环:
$('.subscriptionStatus').each(function(i, obj) {
var sku = $(this).attr('data-sku');
subscriptionStatus(sku, function(response) {
var messageDiv = $(this).closest('.subscriptionMessage');
var innerHtml = '';
if (response){
innerHtml = 'Successful';
}else{
innerHtml = 'Failed';
}
messageDiv.html(innerHtml);
}//wait until
}
对于每个迭代,我都会调用一个函数,在其中调用AWS Lambda中的脚本,并需要等待其响应,然后继续迭代:
function subscriptionStatus( sku, callback ){
var lambda = new AWS.Lambda();
lambda.invoke({
FunctionName: 'MyFunction',
Payload: JSON.stringify({
"sku":sku
})
}, function(err, data){
//response from AWS Lambda
var success = data.Payload;
if( success == 'true'){
//NEED TO PASS TRUE BACK TO THE CURRENT ITERATION OF THE EACH LOOP
callback(true); //correct way?
}else{
//NEED TO PASS FALSE BACK TO THE CURRENT ITERATION OF THE EACH LOOP
callback(false); //correct way?
}
});
}
我的问题是迭代没有等待。
我的代码有什么问题?
.each
,因为它永远不会等待异步操作。 - Kevin B