Read the statement by Michael Teeuw here.
Synchronous requests [solved]
-
@paviro Yeah, but try to understand what I did. Thats the best way to learn. Let me know what you don’t understand. I’ll explain.
-
I do not quite understand how the
itemsReceivedCallback
works :confused: -
Does work great now! The only problem is sometimes a list is empty on a refresh even tough it should not be :/
{ inbox: [], 'ViRO Entertainment': [ 'Todo1', 'Todo2', 'Todo3' ] }
-
I’m on my phone now, so not really able to explain the callbacks. Will do that later.
Regarding the empty lists: try debugging by putting some log statements on places where You receive and send data.
-
It is not the socket connection. The fetcher sometimes returns an empty list :/
-
@paviro try debugging the Fetchet on the same way. ;)
-
I am on it but I can’t find the problem… :confounded:
WhenbroadcastItems
is fired and thereforefetcher.onReceive
triggered the lists are populated. But oncebroadcastTodos()
collects the tasks by looping over thefetchers
some lists appear to be empty. Any chance you could have a look? -
Will fork your module tomorrow and give it a try.
-
Thanks! :)
-
Ok, I looked into it, and it really is pretty simple and obvious when I’ll explain you. So prepare for a “Doh!” moment … ;)
Right before you do the request to WunderList, you empty the items array:
https://github.com/paviro/MMM-Wunderlist/blob/master/fetcher.js#L38Then if Wunderlist responds, you fill the items array with new items.
This means that as long as your fetcher is waiting for wunderlist to respond, the items array is empty. If in the meantime an other fetcher is finished fetching, it uses the items array to make a full list. But that array is then still empty, waiting to be filled after the wunderlust response.
The solution? Move line 38 (
items = [];
) to line 51 (abovefor (var i = 0; i < JSON.parse(body).length; i++) {
).Thats all! :)