У меня есть скрипт nodejs, который получает некоторые данные json, содержащие имена элементов и цены, используя API, а затем проверяет цену этого элемента. Проблема заключается в том, что функция, которая проверяет имя элемента, выполняется до того, как функция, которая записывает прейскурант, заканчивается. Поэтому, если файл прейскуранта не существует, он дает мне «нет такого файла или каталога» для файла прайс-листа. Я искал какое-то время в Интернете, и я нашел что-то в async.series. Я что-то пробовал, но он, похоже, не работает, потому что результат тот же. Если файл прейскуранта существует, сообщение «Цены обновляются успешно! Lenght: появляется после печати цены товара.Ждать окончания функции (в async.series) не работает должным образом
function getPrices() {
console.log("URL requested: ", API_URL)
restling.get(API_URL).then(function(result) {
var JSON_Data = result.data
if (JSON_Data.status == "success") {
console.log("Prices updated successfully! Lenght: "+JSON_Data.prices.length)
} else {
console.log(JSON_Data)
console.log("An error ocurred during updating prices!")
return
}
fs.writeFileSync("prices/pricelist.txt", JSON.stringify(JSON_Data.prices))
})
}
function getItemPrice(item) {
var file = JSON.parse(fs.readFileSync("prices/pricelist.txt"))
for (var i = 0; i < file.length; i++) {
if (file[i].item_name == item) {
return file[i].price
}
}
}
function getItem() {
var item1 = getItemPrice('Sword');
console.log(item1);
}
async.series([
function(callback){
getPrices();
callback();
},
function(callback){
getItem();
callback();
}
]);
EDIT: Я пытался что-то другое, но проблема остается такой же
async.series([
function(callback){
getPrices();
callback();
},
function(callback){
getItem();
callback();
}
], function(error){
if (error) {
console.log(error);
}
});
async.waterfall([
function(callback){
getPrices();
callback();
},
function(arg1, callback){
getItem();
callback();
},
], function (error) {
if (error) {
console.log(error);
}
});
Спасибо, сейчас работает. Дело в том, что если API не ответит в данный момент, произойдет ошибка. Поэтому я хочу, чтобы они хранились на всякий случай. – DaNy3LL
@ DaNy3LL sry, что вы имеете в виду, с api не отвечает в данный момент ?, вы имеете в виду вызов reslint.get? –
Я имею в виду, если веб-сайт, имеющий API, по какой-то причине – DaNy3LL