【问题标题】:Asynchronous functions,promises异步函数,promise
【发布时间】:2021-02-15 00:50:26
【问题描述】:

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

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

如果你知道关于回调、异步函数、promise 的优秀视频或文档资料,请告诉我,因为我对这些回调并不清楚

【问题讨论】:

    标签: javascript asynccallback


    【解决方案1】:
    var x = await generaterandomNumber();
    

    您正在等待generaterandomNumber的返回值

    去仔细看看函数。

    它没有return 语句,所以它返回undefined

    你在其中创建了一个 Promise,但你没有返回它。

    【讨论】:

    • @MalshaMadushaniKalahewaththa — 返回承诺
    【解决方案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);
            });
          }
    

    https://javascript.info/async

    【讨论】:

    • 我的问题解决了。但是在调用 generaterandomNumber 后,函数的其余部分仍然成立时,我遇到了另一个问题。但这仅在生成奇数时才会发生。
    猜你喜欢
    • 2020-07-09
    • 2020-03-24
    • 2017-10-16
    • 1970-01-01
    • 2017-10-29
    • 2018-04-13
    • 2019-10-23
    • 2020-08-13
    • 2021-06-28
    相关资源
    最近更新 更多