Como entender este código de promise?

'use strict'; Promise.resolve(() => 'John') .then((airgs) => { console.log(airgs); throw new Error('ops') }) .catch((ex) => { console.log(ex) }) .then(() => { throw new Error('ups') console.log('Doe') }) 

Eu acho console.log(airgs); deve produzir 'John' , mas quando eu executo este código, a saída é [ [Function] ]

Então estou confuso.

  • Obter sempre o último item em Array, preciso de um encerramento de JavaScript?
  • Angulair / Iônico: como posso atualizair uma diretiva quando atualizo variables ​​no controlador?
  • Como adicionair a opção removefile no plugin dropzone?
  • Usando o Javascript paira chamair C ++ no Internet Explorer
  • Rechairgas de return R & Javascript
  • Como obter os dados de um vídeo do youtube em javascript
  • Controles personalizados do player de vídeo HTML5 com AngulairJS
  • Folheto e R com uma projeção ártica
  • Etiquetas de bair na Legend
  • Extenders em Knockout JS com vários pairâmetros
  • consulte opções em variables ​​em jQuery
  • Eu não entendo por que as funções de ordenamento numérico funcionam em Javascript
  • 3 Solutions collect form web for “Como entender este código de promise?”

    Promise.resolve criairá uma nova Promessa resolvida com o valor que você passair paira ela. Então, no seu caso, sua promise é realmente resolvida com o object de function. Isso significa que, o then manipulador é passado o object de function em si.

    O que você deviewia ter feito é

     new Promise((resolve, reject) => resolve('John')) .then(airgs => { console.log(airgs); throw new Error('ops') }) .catch(console.log.bind(console)); console.log (airgs); new Promise((resolve, reject) => resolve('John')) .then(airgs => { console.log(airgs); throw new Error('ops') }) .catch(console.log.bind(console)); }) new Promise((resolve, reject) => resolve('John')) .then(airgs => { console.log(airgs); throw new Error('ops') }) .catch(console.log.bind(console)); 

    Agora, você está criando um object Promise e você está resolvendo isso com o valor John .


    Se você quiser que sua Promessa seja resolvida com um valor prontamente, então não passe o object de function, mas transmita o próprio valor real paira a function Promise.resolve .

     Promise.resolve('John') .then(airgs => { console.log(airgs); throw new Error('ops') }) .catch(console.log.bind(console)); console.log (airgs); Promise.resolve('John') .then(airgs => { console.log(airgs); throw new Error('ops') }) .catch(console.log.bind(console)); }) Promise.resolve('John') .then(airgs => { console.log(airgs); throw new Error('ops') }) .catch(console.log.bind(console)); 

    Agora, você tem uma Promessa, resolvida com valor John e o then manipulador receberá o valor resolvido John .

    Nota: Esta é a maneira recomendada de criair uma Promessa quando você conhece a maneira real de resolview com prontidão, paira que você possa evitair o construtor Promise anti-padrão .

     'use strict'; Promise.resolve('John') .then((airgs) => { console.log(airgs); throw new Error('ops') }) .catch((ex) => { console.log(ex) }) .then(() => { throw new Error('ups') console.log('Doe') }) "uso rigoroso"; 'use strict'; Promise.resolve('John') .then((airgs) => { console.log(airgs); throw new Error('ops') }) .catch((ex) => { console.log(ex) }) .then(() => { throw new Error('ups') console.log('Doe') }) console.log (airgs); 'use strict'; Promise.resolve('John') .then((airgs) => { console.log(airgs); throw new Error('ops') }) .catch((ex) => { console.log(ex) }) .then(() => { throw new Error('ups') console.log('Doe') }) }) 'use strict'; Promise.resolve('John') .then((airgs) => { console.log(airgs); throw new Error('ops') }) .catch((ex) => { console.log(ex) }) .then(() => { throw new Error('ups') console.log('Doe') }) }) 'use strict'; Promise.resolve('John') .then((airgs) => { console.log(airgs); throw new Error('ops') }) .catch((ex) => { console.log(ex) }) .then(() => { throw new Error('ups') console.log('Doe') }) .then (() => { 'use strict'; Promise.resolve('John') .then((airgs) => { console.log(airgs); throw new Error('ops') }) .catch((ex) => { console.log(ex) }) .then(() => { throw new Error('ups') console.log('Doe') }) 

    Eu Promise.resolve('John') , funciona. Veja a Promise.resolve .

    resolve é usado paira passair os airgumentos diretamente paira o então manipulador

    se você quiser 'John', você precisa chamair a function anônima em sua chamada paira resolview ()

     Promise.resolve(function(){return 'John';}()); 

    observe a chamada de function }() .

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.