Commit 71440fe2 authored by JC Brand's avatar JC Brand

Add another example to the section about dealing with async

parent d5ac1531
...@@ -268,9 +268,29 @@ There are two ways of waiting for the right time before executing your code. ...@@ -268,9 +268,29 @@ There are two ways of waiting for the right time before executing your code.
You can either listen for certain events, or you can wait for promises to You can either listen for certain events, or you can wait for promises to
resolve. resolve.
For example, in the ``Bookmarks`` plugin (in For example, when you want to query the message archive between you and a
`src/converse-bookmarks.js <https://github.com/jcbrand/converse.js/blob/6c3aa34c23d97d679823a64376418cd0f40a8b94/src/converse-bookmarks.js#L528>`_), friend, you would call ``this._converse.api.archive.query({'with': 'friend@example.org'});``
before bookmarks can be fetched and shown to the user, we first have to wait until
However, simply calling this immediately in the ``initialize`` method of your plugin will
not work, since the user is not logged in yet.
In this case, you should first listen for the ``connection`` event, and then do your query, like so:
.. code-block:: javascript
converse.plugins.add('myplugin', {
initialize: function () {
var _converse = this._converse;
_converse.on('connected', function () {
_converse.api.archive.query({'with': 'admin2@localhost'});
});
}
});
Another example is in the ``Bookmarks`` plugin (in
`src/converse-bookmarks.js <https://github.com/jcbrand/converse.js/blob/6c3aa34c23d97d679823a64376418cd0f40a8b94/src/converse-bookmarks.js#L528>`_).
Before bookmarks can be fetched and shown to the user, we first have to wait until
the `"Rooms"` panel of the ``ControlBox`` has been rendered and inserted into the `"Rooms"` panel of the ``ControlBox`` has been rendered and inserted into
the DOM. Otherwise we have no place to show the bookmarks yet. the DOM. Otherwise we have no place to show the bookmarks yet.
...@@ -291,7 +311,7 @@ and ``roomsPanelRendered`` promises have been resolved before it calls the ...@@ -291,7 +311,7 @@ and ``roomsPanelRendered`` promises have been resolved before it calls the
This way, we know that we have everything in place and set up correctly before This way, we know that we have everything in place and set up correctly before
fetching the bookmarks. fetching the bookmarks.
As another example, there is also the following code in the ``initialize`` As yet another example, there is also the following code in the ``initialize``
method of the plugin: method of the plugin:
.. code-block:: javascript .. code-block:: javascript
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment