Я использую nodejs v6 и, следовательно, по умолчанию нет поддержки async / await.Я пытаюсь использовать модель обратного вызова для этого.У меня есть 2 отдельные функции, которые я хочу объединить для параллельной работы:
Функция 1:
function getUserWidgets1(query, getUserWidgetsCallback) {
var finalResult = {};
var userPreferencesDatabaseObject = dbs.userpreferencedbstart("User Preferences: get Widgets ");
userPreferencesDbHelper.getUserWidgets(userPreferencesDatabaseObject, query, function(result, err){
dbs.userpreferencedbstop
(userPreferencesDatabaseObject,
"getUserWidgets");
if(err){
logger.error(err);
getUserWidgetsCallback(null, err);
}else {
finalResult.data = result.rows;
getUserWidgetsCallback(finalResult, null);
}
});
}
Функция 2:
function getAllDefaultWidgets(query, getAllDefaultWidgetsCallback) {
var finalResult = {};
var userPreferencesDatabaseObject = dbs.userpreferencedbstart("User Preferences: get widgets lists");
userPreferencesDbHelper.getAllDefaultWidgets(userPreferencesDatabaseObject, query, function(result, err){
dbs.userpreferencedbstop(userPreferencesDatabaseObject, "getAllDefaultWidgets");
if(err) {
logger.error(err);
getAllDefaultWidgetsCallback(null, err);
}else {
finalResult.data = result.rows;
getAllDefaultWidgetsCallback(finalResult, null);
}
})
}
Я в основном пытаюсь объединить обефункции, использующие async.parallel (для параллельной работы) и возвращающие выходные данные, формируют обе функции примерно так: {userWidgets: "somedata", defaultWidgets: "some more data"} и, следовательно, пытались преобразовать данные в формате ниже ... но яя запутался, как это сделать.Я знаю, с помощью async / await это очень просто, но я не могу это использовать.
Комбинированная функция:
function getUserWidgetsAndDefaultWidget(query, getUserWidgetsCallback) {
console.log("GOD:: Called.... ");
async.parallel([
function(callback) {
setTimeout(function() {
callback(null, 'one');
}, 100);
},
function(callback) {
setTimeout(function() {
callback(null, 'two');
}, 100);
}
],
function(err, results) {
// has result ['one', 'two']
});
}
Может кто-нибудь, пожалуйста, помогите мне здесь.