danieljsfernandes Posted December 2, 2015 at 11:31 AM Report Share #590295 Posted December 2, 2015 at 11:31 AM (edited) Bom dia, Estou a desenvolver um código em javascript para funcionar em nodeJS. O que necessito é que no ciclo for que abaixo apresento espere pela resposta e só depois passe ao outro item. for (var i = 0; i < num; i++) { getItemsPrice(items_to_check[i].name, function(error, data) { if (error) { console.log("Error: " + error); problem = "PriceItem"; } if (data > -1) { items_to_check[i].price = data; } }); if (problem != false) { break; } } O que se passa aparentemente é que ele não espera pela resposta do anterior e passa logo para o seguinte. A função getItemsPrice é a seguinte: function getItemsPrice(item, callback) { var url = 'http://localhost/system/preco.php?item=' + item; request({ url: url, json: true }, function(error, response, body){ console.log("WebAPI: " + body); if(!error && response.statusCode === 200){ if (body != "notfound") callback(null, body); else callback(null, "-1"); } else if (error) { getItemsPrice(item, callback); } }); } Estive a verificar e a função consegue os preços no entanto não os mete nos items corretos. Alguma ideia? Melhores cumprimentos. Edited December 2, 2015 at 11:31 AM by danieljsfernandes "Medir o progresso de um programa por linhas de código é como medir o processo de montagem de um avião pelo peso." Bill Gates Link to comment Share on other sites More sharing options...
taviroquai Posted December 7, 2015 at 12:09 AM Report Share #590433 Posted December 7, 2015 at 12:09 AM (edited) Olá, Estás a usar node.js e depois chamas um script PHP? Isso parece uma confusão... Porque não passas logo os preços para o HTML? Para esses pedidos sequenciais tem que user pedidos ajax recursivos o que não é nada aconselhado mas deixo para exemplo: // Lista de items var items = [{preco: null}, {preco: null}]; var i = 0; // Função ajax que obtem os peços function getItemPrice(item) { request({ url: url, json: true }, function (error, response, body) { // Verificações... item.preco = body; i++; // Incrementa indice if (i > items.length) { // Condição de paragem return; } getItemPrice(items[i]); }); } // Inicio da obtenção dos preços getItemPrice(items[i]); Edited December 7, 2015 at 12:09 AM by taviroquai Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now