一只甜甜圈
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);
? ? ? ? });
? ? ? }

開心每一天1111
TA貢獻1836條經驗 獲得超13個贊
var x = await generaterandomNumber();
您正在等待的返回值generaterandomNumber
去仔細看看這個函數。
它沒有return
聲明,因此返回undefined
。
您在其中創建了一個 Promise,但不返回它。
添加回答
舉報
0/150
提交
取消