私は約束が新しく、次のコードは予期しない結果を招いていますが、その理由はわかりません。プロミスが結果を待つ前に解雇
Main.js内のTaskrunner.SyncObjects関数は、filledCourses変数が満杯になるのを待つ必要がありますが、代わりにただちに起動します。これにより、空のselectedCourses変数が使用されます。
なぜ結果が出る前にTaskRuner.SyncObjects関数が実行されるのですか?
Main.js
function StartSync(){
var a = Settings.LoadCourseList(standardOSPathUserData);
var b = a.then(function(){
console.log("b is running");
var selectedCourses = Settings.courseList;
return TaskRunner.SyncObjects(selectedCourses).then(function(){
fileSyncRunning = false;
});
}).catch(function(error){
console.log("StartSync Error message: " + error);
});
}
Settings.js
Settings.LoadCourseList = function(osPath){
var pathToCourseListSettings = osPath + courseListFileName;
return new Promise(function(resolve, reject){
try {
return connection.Login().then(function(){
return connection.GetCourseList().then(function(result){
var allCourses = [];
for(var p=0; p<=result.length-1;p++){
allCourses.push({courseID: result[p].courseID, courseName: result[p].courseName, selected: true});
}
courseListJSON = JSON.stringify(allCourses);
return courseListJSON;
}).then(function(courseListJSON){
fs.appendFileSync(pathToCourseListSettings,courseListJSON,encoding='utf8');
console.log("New Course settings file created and filled: " + pathToCourseListSettings);
return resolve();
});
}).then(function(){
return resolve();
});
} catch (e) {
console.log("FAIL courseList settingsfile creation - Error: " + e.code);
return reject(e);
}
});
};
'TaskRunner.SyncObjects'は何ですか? – trincot
@trincotそれは私がコードを公開することはできません約束関数です。問題はこの機能にあると思いますか?結果は "TaskRunner.SyncObjects"関数の前に定義する必要があるため、この関数の内部動作は重要ではありません。右? – Dragon54
実際、 'SyncObjects'が実行される前に結果が期待されるならば、その関数とは何の関係もありません。私はその質問を誤解した。 – trincot