Nuova parola chiave "delay" per JavaScript

-2

Ho avuto un'ottima idea per una nuova parola chiave javascript "delay", ma non so cosa posso fare per portarla alle nuove specifiche. Inoltre voglio sapere cosa ne pensate voi ragazzi e se è persino realistico.

Che cos'è la parola chiave delay ?

La parola chiave delay non fa altro che fermare l'esecuzione dello stack corrente e continua immediatamente al successivo "lavoro" nella coda. Ma non è tutto! Invece di scartare lo stack, lo aggiunge alla fine della coda. Dopo che tutti i "processi" sono stati completati, lo stack continua ad essere eseguito.

A cosa serve?

delay potrebbe aiutare a rendere il codice di blocco non bloccante mentre sembra ancora il codice sincrono. Un breve esempio:

setTimeout(function(){
    console.log("two");
},0);
console.log("one");
delay; //since there is currently another task in the queue, do this task first before continuing
console.log("three");

//Outputs: one, two, three

Questa semplice parola chiave ci permetterebbe di creare un codice dall'aspetto sincrono che è asincrono dietro le quinte. Ad esempio, l'utilizzo di moduli node.js non sarebbe più impossibile da utilizzare nel browser senza trucchi.

Ci sarebbero così tante possibilità con una simile parola chiave!

Questo modello è utile? Cosa posso fare per inserire questo nella nuova specifica ECMAscript?

Nota: l'ho già chiesto in precedenza  su Overflow dello stack , dove è stato chiuso.

    
posta Van Coding 04.07.2012 - 18:36
fonte

4 risposte

7

È divertente che la tua domanda sia stata downvoted, poiché la funzione che hai descritto è in realtà l'oggetto di un strawman 1 proposta (ma il vero nome della nuova parola chiave è await ).

Se vuoi sostenere questa proposta, puoi iscriverti alla es-discutere la mailing-list e guardare per le precedenti discussioni a riguardo.

1 Strawman è lo spazio dei nomi in cui sono conservati gli ES6 proposte prima della convalida. L'altro è Harmony , dove vengono mantenute le proposte ES6 che sono state approvate ma richiedono più lavoro .

    
risposta data 22.11.2012 - 02:29
fonte
3

Solo un'opinione personale, ma guarda entrambi:

  • barebone setTimeout() e setInterval() ,
  • o un gruppo di librerie come defer() di Dojo.

Non vedo dove sarebbe il punto per rendere questa una parola chiave per la lingua. Questo sembra fuori bordo, quando ci sono già sufficienti strumenti nella libreria standard e miglioramenti di livello superiore nelle librerie di terze parti.

    
risposta data 04.07.2012 - 19:02
fonte
3

Per me, sembra una versione irritata della coroutine . Avere la capacità di cedere a un altro coroutine in modo esplicito sarebbe molto più utile di un generale "cedere a qualcosa, non so cosa", che è ciò che defer è.

    
risposta data 04.07.2012 - 19:14
fonte
1

Secondo me,

 window.setTimeout(function() { console.log("three"); }, 0);

fa la stessa cosa, quindi non c'è bisogno di questa parola chiave, almeno non nel browser.

    
risposta data 04.07.2012 - 18:49
fonte

Leggi altre domande sui tag