none
js开发win8应用多线程问题,如何实现后台处理数据? RRS feed

  • 问题

  • 在开发win8应用过程中,如何做到后台处理数据,不会使UI Hang住? WinJS.Promise能做到吗?谢谢! 求回答。。
    2012年10月24日 4:05

答案

  • JS中使用异步API 是通过WinJS.Promise来实现的。你可以参考例子 WinJS Promise sample 

    用Promise创建异步方法,然后JS调用,在then或者done中进行异步方法调用后的处理,类似于C#中的await 。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月25日 6:49
    版主
  • 本身异步的API就是被异步调用了,只是promise.then 中then的代码会在异步执行完成后执行,这个并不占用UI线程,不会阻塞UI.

    WinRT API(如getGeopositionAsync(); loadFromFileAsync()) 中提供的异步方法底层是不是用的多线程?

    这些API本身执行时候会create task 也就是会创建一个线程去执行,不会影响UI.


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Will Yuan 2012年12月5日 2:28
    2012年11月5日 7:06
    版主

全部回复

  • RT, 求回答。
    2012年10月25日 3:06
  • JS中使用异步API 是通过WinJS.Promise来实现的。你可以参考例子 WinJS Promise sample 

    用Promise创建异步方法,然后JS调用,在then或者done中进行异步方法调用后的处理,类似于C#中的await 。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月25日 6:49
    版主
  • 这个例子已经研究过,这种异步的方式好像并不能实现类似多线程问题来解决耗时数据的处理,而仅仅是一种延时执行,是这样的吗?

    如果将耗时数据处理放在异步方法中,执行的时候UI还是会Hang住。针对js开发win8应用,有什么办法让数据处理放到后台,而不影响UI?

    此外请问WinRT API(如getGeopositionAsync(); loadFromFileAsync()) 中提供的异步方法底层是不是用的多线程? 

    2012年10月25日 7:11
  • 有人知道吗? 

    2012年10月26日 7:01
  • 本身异步的API就是被异步调用了,只是promise.then 中then的代码会在异步执行完成后执行,这个并不占用UI线程,不会阻塞UI.

    WinRT API(如getGeopositionAsync(); loadFromFileAsync()) 中提供的异步方法底层是不是用的多线程?

    这些API本身执行时候会create task 也就是会创建一个线程去执行,不会影响UI.


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Will Yuan 2012年12月5日 2:28
    2012年11月5日 7:06
    版主