Programación de WinJS

Una nueva API de programador en Windows 8.1 te permite establecer la prioridad de las tareas y administrar trabajos. De este modo, puedes escribir aplicaciones en HTML5 que usan recursos del sistema con mayor eficacia y que responden adecuadamente a los usuarios.

Escribir aplicaciones que siempre respondan adecuadamente puede suponer un desafío. Puedes combinar varios elementos complejos de la interfaz de usuario, como controles ListView, controles SemanticZoom y controles personalizados que compitan por los recursos del sistema. Muchos elementos requieren tanto un trabajo en primer plano inmediato (por ejemplo, una animación) como trabajo en segundo plano adicional.

Con Windows 8 y la biblioteca de Windows para JavaScript 1.0, no había ningún programador integrado. Una tarea en segundo plano de baja prioridad podía anticiparse a un trabajo en primer plano y provocar que la aplicación se entrecortase y no respondiese adecuadamente. Dado que el trabajo se programaba en colas distintas, no había una manera sencilla de coordinar las diversas colas para obtener la prioridad deseada.

Windows 8.1 y la biblioteca de Windows para JavaScript 2.0 presentan Scheduler, un objeto/espacio de nombres que consolida todas las colas de trabajo en una única cola universal. Esta nueva cola tiene una directiva de programación basada en la prioridad que permite que las aplicaciones se ejecuten de manera rápida y fluida, y que ofrece una experiencia de desarrollador más unificada. Puedes programar tareas fácilmente y asignar prioridades para que cada trabajo se ejecute de manera correcta en el momento adecuado.

El Scheduler se coordina con el trabajo realizado por la biblioteca de Windows para JavaScript y el trabajo asincrónico y prioritario realizado por Windows en tiempo de ejecución. El uso del programador implica que el trabajo de la aplicación pueda programarse con la prioridad correcta con respecto a todos los demás trabajos del sistema.

Programación de trabajos

Para programar el trabajo, usa el método schedule para crear un trabajo. Pasa este método a una función que realice la tarea que quieres realizar. También puedes especificar una prioridad para el trabajo. El método schedule devuelve un objeto que implementa la interfaz IJob y puedes usar este objeto para pausar, reanudar y cancelar el trabajo que has programado.

Aquí tienes un ejemplo que programa dos trabajos sencillos con prioridad normal.


// Schedule some work.
var job1 = S.schedule(function () {
    window.output("Running job1");
}, S.Priority.normal);
window.output("Scheduled job1");

// Schedule more work.
var job2 = S.schedule(function () {
    window.output("Running job2");
}, S.Priority.normal);
window.output("Scheduled job2");

Para ver el código completo, consulta la muestra de Scheduler.

Para un mayor control, la función del trabajo puede aceptar un objeto IJobInfo. Puedes usar este objeto para determinar si el trabajo debería ceder, programar un segundo trabajo para que se ejecute después de que finalice el trabajo actual y especificar la ejecución de una función si el trabajo cede el control.

Administración de trabajos

En la sección anterior se mencionó que puedes usar el objeto IJob devuelto por el método schedule para pausar, cancelar y reanudar trabajos. También puedes usar el método createOwnerToken del objeto Scheduler para obtener un IOwnerToken y usarlo para controlar cualquier objeto IJob de su propiedad.

Este ejemplo crea varios objetos IOwnerToken y los usa para establecer la propiedad owner de varios objetos IJob. A continuación, usa IOwnerToken para cancelar varios objetos de forma simultánea.


var ownerObject1 = S.createOwnerToken();
var ownerObject2 = S.createOwnerToken();
var ownerObject3 = S.createOwnerToken();

// Schedule some work.
var job1 = S.schedule(function () {
    window.output("Running job1 with owner1");
}, S.Priority.normal);
job1.owner = ownerObject1;
window.output("Scheduled job1 with owner1");

// Schedule some work.
var job2 = S.schedule(function () {
    window.output("Running job2 with owner2");
}, S.Priority.normal);
job2.owner = ownerObject2;
window.output("Scheduled job2 with owner2");

// Schedule some work.
var job3 = S.schedule(function () {
    window.output("Running job3 with owner1");
}, S.Priority.normal);
job3.owner = ownerObject1;
window.output("Scheduled job3 with owner1");

// Schedule some work.
var job4 = S.schedule(function () {
    window.output("Running job4 with owner3");
}, S.Priority.normal);
job4.owner = ownerObject3;
window.output("Scheduled job4 with owner3");

window.output("Canceling jobs with owner1");
ownerObject1.cancelAll();

Para ver el código completo, consulta la muestra de Scheduler.

Para ver más ejemplos, incluidos ejemplos que muestren la cesión y la purga, consulta la muestra de Scheduler.

 

 

Mostrar:
© 2015 Microsoft