简体   繁体   English

异步函数,Promise

[英]Asynchronous functions,promises

This is very small code where I started to learn callbacks and promises.The problem here is have use async function an await.but it doesn't wait for the return.Prints the value as undefined.这是我开始学习回调和承诺的非常小的代码。这里的问题是使用异步函数和等待。但它不等待返回。将值打印为未定义。

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>
    );
  
}

And also if you know good video or documentation material regarding callbacks,async functions,promises please let me know since I have no clear idea about this callbacks此外,如果您知道关于回调、异步函数、promise 的优秀视频或文档材料,请告诉我,因为我对这个回调没有明确的想法

You must return Promise object .您必须返回 Promise 对象。

await work with promise edit等待与承诺一起工作

 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);
        });
      }

https://javascript.info/async https://javascript.info/async

var x = await generaterandomNumber();

You are awaiting the return value of generaterandomNumber您正在等待generaterandomNumber的返回值

Go and look at the function more carefully.去仔细看看函数。

It does not have a return statement so it returns undefined .它没有return语句,所以它返回undefined

You create a Promise inside it, but you don't return it.你在其中创建了一个 Promise,但你没有返回它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM