Мы представляем начало нашего маленького проекта по выкладыванию в open-source исходного кода наших проектов (полностью или частично). Первой ласточкой становится маленькая библиотека, предназначенная для работы с Deferred из Twisted Framework в qooxdoo на JavaScript.
Практически полностью код был взят из MochiKit.Async и адаптирован под qooxdoo. Полезные нововедения: если если в течение 1 секунды не будет обработана ошибка в Deferred (выполнение дойдет до конца цепочки callback, и останется ошибка), о ней будет сообщено на консоль, как о возможно необработанном исключении.
Если Вы еще не знаете, что такое Deferred, я бы рекомендовал обратиться к Twisted Handbook. Со своей стороны обещаю как можно скорее написать о Deferred по-русски.
Итак, страничка qx.Deferred.
Пример кода:
function callRPC(method, params)
{
this.debug("API: call " + method + " with params: ");
this.debug(params);
var d = new netstream.lib.Deferred();
var rpc = new qx.io.remote.Rpc();
rpc.setTimeout(10000);
rpc.setUrl(this.__api_url);
rpc.callAsync(
function (result, ex, id)
{
if (ex == null)
d.callback(result);
else
d.errback(ex);
},
method, params);
var that = this;
d.addCallback(function (result) { that.debug("API: result:"); that.debug(result); return result; });
d.addErrback(function (ex) { that.error(ex); return ex; });
return d;
};
d = callRPC("somemethod", { 'someParams' });
d.addCallback(function (result) { alert("Got result: "+result); });
Comments
Comments powered by Disqus