quirkey / sammy

Sammy is a tiny javascript framework built on top of jQuery, It's RESTful Evented Javascript.
http://sammyjs.org
MIT License
2.99k stars 384 forks source link

Nested 'then' not working properly. Fixed #197

Open jah0wl opened 11 years ago

jah0wl commented 11 years ago

In previous version nested then didn't work at expected:

context.load("templates/home.template"
            ).then(function(){
                context.log("1");
                this.load("templates/home.template"
                ).then(function(){
                    context.log("2");
                    this.load("templates/home.template"
                    ).then(function(){
                        context.log("3");
                        this.load("templates/home.template"
                        ).then(function(){
                            context.log("3a");
                        }).then(function(){
                            context.log("3b");
                        });
                    });
                }).then(function(){
                    context.log("4");
                });
            }).then(function(){
                context.log("5");
            }).then(function(){
                context.log("6");
                this.load("templates/home.template"
                ).then(function(){
                    context.log("7");
                    this.load("templates/home.template"
                    ).then(function(){
                        context.log("8");
                    });
                }).then(function(){
                    context.log("9");
                });             
            });

returns:

[Fri Jun 07 2013 16:47:28 GMT+0200 (CEST)] 1 sammy.js:97 [Fri Jun 07 2013 16:47:28 GMT+0200 (CEST)] 5 sammy.js:97 [Fri Jun 07 2013 16:47:28 GMT+0200 (CEST)] 6 sammy.js:97 [Fri Jun 07 2013 16:47:28 GMT+0200 (CEST)] 2 sammy.js:97 [Fri Jun 07 2013 16:47:28 GMT+0200 (CEST)] 4 sammy.js:97 [Fri Jun 07 2013 16:47:28 GMT+0200 (CEST)] 7 sammy.js:97 [Fri Jun 07 2013 16:47:28 GMT+0200 (CEST)] 9 sammy.js:97 [Fri Jun 07 2013 16:47:39 GMT+0200 (CEST)] 3 sammy.js:97 [Fri Jun 07 2013 16:47:39 GMT+0200 (CEST)] 8 sammy.js:97 [Fri Jun 07 2013 16:47:39 GMT+0200 (CEST)] 3a sammy.js:97 [Fri Jun 07 2013 16:47:39 GMT+0200 (CEST)] 3b sammy.js:97

With the change it outputs what we expect:

[Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 1 sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 2 sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 3 sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 3a sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 3b sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 4 sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 5 sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 6 sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 7 sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 8 sammy.js:97 [Fri Jun 07 2013 16:48:41 GMT+0200 (CEST)] 9 sammy.js:97

endor commented 10 years ago

Can you please add a test for this?

jah0wl commented 10 years ago

How do i do it?

endor commented 10 years ago

Look at the other tests. You might push different strings on to an array in the nested thens and then check afterwards that the strings are in the correct order. If the test fails before the change and works after, it's most likely correct (: Probably somewhere in render_context_spec.js. To run the tests, just run ruby test/test_server.

jah0wl commented 10 years ago

As I posted, I made a test and also send a patch to fix it... I don't really understand what you need.

s7726 commented 6 years ago

@jah0wl I think he's looking for a code test, essentially what you have written out but in the spec file so that it runs as part of the automated build process.