为了账号安全,请及时绑定邮箱和手机立即绑定

异步函数、承诺

异步函数、承诺

一只甜甜圈 2023-07-06 16:52:32
这是非常小的代码,我开始学习回调和承诺。这里的问题是使用异步函数等待。但它不会等待返回。将值打印为未定义。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>    );  }另外,如果您知道有关回调、异步函数、承诺的优秀视频或文档材料,请告诉我,因为我对此回调没有明确的了解
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

您必须返回 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);

        });

      }


查看完整回答
反对 回复 2023-07-06
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

var x = await generaterandomNumber();

您正在等待的返回值generaterandomNumber

去仔细看看这个函数。

它没有return声明,因此返回undefined

您在其中创建了一个 Promise,但不返回它。


查看完整回答
反对 回复 2023-07-06
  • 2 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信