亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

異步函數、承諾

異步函數、承諾

一只甜甜圈 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 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號