Open Source: Deferred для qooxdoo

Posted by Андрей on Ноябрь 01, 2008

Мы представляем начало нашего маленького проекта по выкладыванию в open-source исходного кода наших проектов (полностью или частично). Первой ласточкой становится маленькая библиотека, предназначенная для работы с Deferred из Twisted Framework в qooxdoo на JavaScript.

Практически полностью код был взят из MochiKit.Async и адаптирован под qooxdoo. Полезные нововедения: если если в течение 1 секунды не будет обработана ошибка в Deferred (выполнение дойдет до конца цепочки callback, и останется ошибка), о ней будет сообщено на консоль, как о возможно необработанном исключении.

Если Вы еще не знаете, что такое Deferred, я бы рекомендовал обратиться к Twisted Handbook. Со своей стороны обещаю как можно скорее написать о Deferred по-русски.

Итак, страничка qx.Deferred.

Пример кода:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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); });
Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

Comments