А старый дедовский способ
var mySomeItems = null;
getSomeItems(
function( someItems ) {
mySomeItems = someItems;
}
);
и где-то
if(mySomeItems)
{
...
}
У меня, например, вот так используется "event emitter”:
1. если нельзя изменить функцию getSomeItems
var myME = new ManagerEvents(...); // <-- где-то
myME.on("NewSomeItems", function(event)
{
var someItems = event.data;
...
});
getSomeItems(
(function( someItems )
{
this.emit("NewSomeItems", someItems);
}).bind(myME)
);
2. если можно изменить функцию getSomeItems
var myME = new ManagerEvents(...); // <-- где-то
myME.on("NewSomeItems", function(event)
{
var someItems = event.data;
...
});
getSomeItems(myME); // просто принимает аргументом ManagerEvents и внутри генерирует событие.
Потом я в свой ManagerEvents добавил функцию (примерно)
ManagerEvents.prototype.delegate = function(name)
{
var me = this;
return function()
{
return me.emit(name, arguments);
};
};
и в итоге получается
var myME = new ManagerEvents(...); // <-- где-то
myME.on("NewSomeItems", function(event)
{
var someItems = event.data[0];
...
});
getSomeItems(myME.delegate("NewSomeItems"));