jQuery deferred when then

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 21-09 15:49

SideShow

Administrator

Topicstarter
Hallo

Volgend stukje code: http://pastebin.com/e0Mff0pg

Wat je ziet zijn 2 XHR declaraties die dan sequentieel moeten worden uitgevoerd via when en then.
Echter valt hij door mijn loginXHR en doet al de volgende XHR voordat de loginsuccess gebeurd is.

Ik heb op een andere hetzelfde gedaan http://pastebin.com/37GBEtwf
en daar werkt het wel, met name, de callback op de XHR zelf gebeurd vóór er een nieuw then wordt begonnen.

Iemand een tip ?

Acties:
  • +1 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Neen, je voert de ajax al uit op regel 1 en 15.

Bij de tweede wrap je the succession call ('then') in een function.

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 21-09 15:49

SideShow

Administrator

Topicstarter
Bedoel je dat ik meer zoiets moet doen?

code:
1
2
3
$.when()
                .then(function() { return loginXHR; })
                .then(function() { return userXHR; })


Dit heeft nog hetzelfde probleem.

*edit: ok, als ik in de .then(function() { effectief the xhr zelf aanmaak, werkt het wel. Ik laat het even sudderen in mijn hoofd ;)

[ Voor 28% gewijzigd door SideShow op 26-01-2017 11:58 ]


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Neen, nu return je gewoon de result: Wat je wilt is dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var userXHR = function() { return $.ajax({
                type: 'POST',
                url: controllerConfig.apiURL('apptitude/user?_format=json'),
                data: '',
                dataType: 'json',
                contentType: 'application/json; charset=utf-8',
                success: function(data) {
                    var ddo = new DrupalDataObject(data);
                    console.log('user callback');
                    controllerConfig.userInfo.firstname = ddo.field('field_firstname');
                    controllerConfig.userInfo.lastname = ddo.field('field_lastname');
                    controllerConfig.userInfo.avatar = ddo.field('user_picture');
                }
            }); }

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 21-09 15:49

SideShow

Administrator

Topicstarter
Super bedankt.

Dit is de eerste keer dat ik met deferred dingen wil werken, dus als je nog tips hebt, zeker welkom.

Mn finaal stukje code: http://pastebin.com/WxDfMSNP

Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 29-09 15:25
Als je met promises wilt werken, kun je dan niet beter Fetch (+polyfill) gebruiken?

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 21-09 15:49

SideShow

Administrator

Topicstarter
Spinal schreef op donderdag 26 januari 2017 @ 16:34:
Als je met promises wilt werken, kun je dan niet beter Fetch (+polyfill) gebruiken?
Ik ben blij dat ik er nu voor het eerst in slaag om async taken netjes onder elkaar te kunnen zetten en dus het (handmatige) callback mechanisme voor een groot stuk kan verlaten.

Dat ik mezelf er zeker nog verder in ga verdiepen, staat vast :)
Pagina: 1