Я пытаюсь использовать модуль synchronize.js в моем приложении node.js, но я терплю неудачу. Функции все еще не работают, и я не получаю свои данные. Вот общий фрагмент моего кода.Не могу понять, как использовать synchronize.js в node.js
// an object with devices to migrate
var devices2Migrate =
{
device_array: [],
init: function (done)
{
sync.fiber(function()
{
//do init stuff
console.log('yay we have a DB connector');
DB1.connect(function(err)
{
console.log('Database 1 is connected ...');
}
DB2.connect(function(err)
{
console.log('Database 2 is connected ...');
}
}, done);
},
loadDevices2Migrate: function (done)
{
var self = this;
sync.fiber(function()
{
//get stuff from DB using query()
}, done);
}
}; //end of object
// load up all the data for the devices using the old style tables
sync.fiber(function(){
sync.await(devices2Migrate.init(sync.defer()));
sync.await(devices2Migrate.loadDevices2Migrate(sync.defer()));
console.log( devices2Migrate.device_array);
console.log( "size: " + devices2Migrate.device_array.length);
});
Но что происходит, является то, что console.log показывает, что функции не ждут:
yay we have a DB connector
[]
size: 0
Database 1 is connected ...
Database 2 is connected ...
Может кто-нибудь мне точку к тому, что я делаю неправильно? Я могу заполнить тела методов больше, если это необходимо, я просто пытался сначала сохранить его. Я знаю, что мои методы (функции) верны, потому что если я завершу нижние вызовы console.log (те, что в волокне) в обратном вызове setTimeout, тогда я получу свои данные.
Вы должны обещаниям – Derek
@Oliver Можете ли вы предоставить ссылку или что-то. В модуле synchronize.js ничего не говорится о необходимости таких вещей. [Эта страница] (https://mixmax.com/blog/node-fibers-using-synchronize-js) указывает, что обещания не используются/необходимы для модуля синхронизации. – Aaron
Есть ли причина, по которой вы хотите использовать модуль синхронизации? – Derek