У меня есть 2 CSV-что я пытаюсь читать, после чего я использую данные в этих двух, чтобы сделать материал:jQuery Обещания не работают?
function getData() {
var deferredObject = $.Deferred(); //representation of some asynchronous work
d3.csv("./parse_shp.csv", function(data) {
console.log(data);
shp_array = data;
});
d3.csv("./fao_coutnry_shp.csv", function(data) {
console.log(data);
fao_array = data;
});
//once both of those are done, resolve the promise
deferredObject.resolve();
return deferredObject.promise();
}
function LevenshteinDistance() {
console.log("do stuff with the data");
}
//call LevenDistance after the promise has been resolved
getData().then(LevensteinDistance());
Но это не работает ... он будет печатать строку "do something with the data"
перед тем печать данных csv.
Что я делаю неправильно? В качестве примера я использовал ссылку this.
Я не понимаю, как подключиться deferredObject
и getData()
? Потому что, даже если я создаю отложенный объект в функции, не будет ли он просто асинхронно считывать csv в любом случае, а затем ошибочно называть defferedObject.resolve()
?
В любом случае, я новичок в обещаниях, поэтому любая помощь будет принята с благодарностью!
Вы решаете обещание перед тем, как любой из методов .csv завершил работу. –
@KevinB Спасибо! Итак, как мне решить проблему после их завершения? Должен ли я связывать обещание с методами csv? – ocean800
'getData(). Then (LevensteinDistance());' является ошибкой, вы не должны CALL LevensteinDistance и передать свое возвращаемое значение 'then', вы должны просто передать' LevensteinDistance' (функцию) без '()' после это – doug65536