Open Source: Deferred для qooxdoo

Мы представляем начало нашего маленького проекта по выкладыванию в 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 powered by Disqus
Contents © 2015 Andrey - Powered by Nikola