Кто-нибудь знает, почему это не работает синхронно?Последнее обещание, кажется, разрешается до первого
...
var promise = Promise.resolve();
promise.then( () => {
return new Promise((resolve, reject) => {
var file1 = fileChooserCSV.files[0];
var reader1 = new FileReader();
reader1.onload = function(){
var csv = reader1.result;
csvJson = csvJSON(csv);
resolve();
};
reader1.readAsText(file1);
});
});
promise.then( () => {
return new Promise((resolve, reject) => {
var file2 = fileChooserConfig.files[0];
var reader2 = new FileReader();
reader2.onload = function(){
var config = reader2.result;
configJson = JSON.parse(config);
resolve();
};
reader2.readAsText(file2);
});
});
promise.then( () => {
return new Promise((resolve, reject) => {
console.log('end');
resolve();
});
});
Методы загрузки читателя никогда не выполняются, хотя они действительно должны (есть данные, переданные им), и делали это до того, как они были перемещены в обещание.Поскольку onload не запускается, resol () никогда не запускает эфир, чтобы перейти к следующему then (), но последний then () выполняет ...
Этот код запускается во всплывающем окне расширения Chrome, если этокакая разница?
Большое спасибо!
ОБНОВЛЕНИЕ ..
Реструктуризация классическим вложенным способом работает отлично
var file1 = fileChooserCSV.files[0];
var reader1 = new FileReader();
reader1.onload = function(){
var csv = reader1.result;
csvJson = csvJSON(csv);
var file2 = fileChooserConfig.files[0];
var reader2 = new FileReader();
reader2.onload = function(){
var config = reader2.result;
configJson = JSON.parse(config);
console.log('end');
};
reader2.readAsText(file2);
};
reader1.readAsText(file1);