异步函数、承诺

这是非常小的代码,我开始学习回调和承诺。这里的问题是使用异步函数等待。但它不会等待返回。将值打印为未定义。


import React from 'react';


export default function App () {



  function generaterandomNumber(){

    let promise = new Promise(function(resolve, reject) {

      setTimeout(() => {

        var Number=Math.floor(Math.random() * 10);

        if(Number % 2 === 0){

          console.log("resolve")

          resolve(Number)

          return Number;

        }else{

          reject("Odd")

        }

      }, 500);

    });

  }

  


 

  async function handleClick(event){

    console.log("Before")

    var x = await generaterandomNumber();

    console.log(x)

    console.log("After")

    event.preventDefault();

  }


  


    return (

      <div style={{textAlign: 'center'}}>

        <h1>Random Number generator</h1>

        <button onClick={handleClick}>Generate</button>

      </div>

    );

  

}


另外,如果您知道有关回调、异步函数、承诺的优秀视频或文档材料,请告诉我,因为我对此回调没有明确的了解


一只甜甜圈
浏览 95回答 2
2回答

慕标琳琳

您必须返回 Promise 对象。等待与承诺编辑一起工作 function generaterandomNumber(){        return new Promise(function(resolve, reject) {          setTimeout(() => {            var Number=Math.floor(Math.random() * 10);            if(Number % 2 === 0){              console.log("resolve")              resolve(Number)              return Number;            }else{              reject("Odd")            }          }, 500);        });      }

开心每一天1111

var&nbsp;x&nbsp;=&nbsp;await&nbsp;generaterandomNumber();您正在等待的返回值generaterandomNumber去仔细看看这个函数。它没有return声明,因此返回undefined。您在其中创建了一个 Promise,但不返回它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript