0

我有下一个 Javascript 事件处理程序:

 function eventHandler(e) {
        //doSomething 1...

        asyncFunctionWhichReturnPromise(data).then(function (data) {
              //doSomething 2...
              e.data = {
                  Id: data.Id,
                  Type: "Type" 
              };
        });
        //doSomething 3...
 }

因此,当我在“//doSomething 2...”之前运行代码“//doSomething 3...”时,但由于它是一个事件处理函数,我需要在“//doSomething 2...”处准备数据将引发下一个事件之前的代码块。我如何使用 q.js(Kris Kowal 的承诺库)来做到这一点?

重要的附加信息:实际上我需要在 eventHandler 离开之前执行块 //doSomething 2... 因为有 e.data 的初始化,这将在下一步使用 - kendo ui upload 会将数据上传到服务器上.

4

1 回答 1

0

只需将doSomething 3...代码移动到回调函数中

 function eventHandler(e) {
        //doSomething 1...

        asyncFunctionWhichReturnPromise(data).then(function (data) {
              //doSomething 2...

              //doSomething 3...
        });
 }

如果你想让它更明显doSomething 3...应该在之后运行,你可以把它放在一个函数中

 function eventHandler(e) {
        //doSomething 1...

        asyncFunctionWhichReturnPromise(data).then(function (data) {
              //doSomething 2...

              doSomething3();
        });

        function doSomething3() {
              //doSomething 3...
        }
 }
于 2015-04-16T15:35:23.300 回答