【问题标题】:promise executing function returning undefined承诺执行函数返回未定义
【发布时间】:2019-10-02 02:37:32
【问题描述】:

当承诺解决时,我试图在承诺内返回一个值,然后将返回的值传递给我的状态。但是,无论我尝试什么,我的函数的返回值都是未定义的。

我的函数是从一个 npm 包中导入的,这里有它的文档: https://www.npmjs.com/package/synonyms

它旨在返回给定单词的同义词。

也许我构建承诺本身的方式存在一些非常明显的问题,导致一些糟糕的异步时间?

我尝试只返回函数而不将其传递给解析,但这会引发错误

searchForSynonymsAndDef = (param) =>{
if(this.state.scholarMode==true){
console.log("INSIDE SYNONYMS")

var synonyms = require("synonyms");

  let p = new Promise((resolve,reject,param)=>{
    var result=resolve(synonyms(param,"n"))

  }).then((result)=>{
    console.log("result is:",result)
  })
  .then((result)=>{
    this.setState({textToReadAloud: "here are some synonyms for "
    +param +"...firstly.....nouns...."+result})
    console.log("here are some synonyms for "+param +"...firstly.....nouns...."+result)
    })
  }else{
    console.log("sorry scholar mode is off")
  }
}

我希望 'result' 是基于传入参数的同义词,但不幸的是结果总是 = undefined :(

【问题讨论】:

  • 去掉第一个then()。您没有返回任何内容,因此下一个 then() 正在查看 undefined

标签: javascript es6-promise undefined-function


【解决方案1】:

你不需要将参数传递给 promise。只需从 Promise 中删除参数,它应该可以工作。

searchForSynonymsAndDef = (param) =>{
if(this.state.scholarMode==true){
console.log("INSIDE SYNONYMS")

var synonyms = require("synonyms");

  let p = new Promise((resolve,reject)=>{
    var result=resolve(synonyms(param,"n"))

  }).then((result)=>{
    console.log("result is:",result)
  })
  .then((result)=>{
    this.setState({textToReadAloud: "here are some synonyms for "
    +param +"...firstly.....nouns...."+result})
    console.log("here are some synonyms for "+param +"...firstly.....nouns...."+result)
    })
  }else{
    console.log("sorry scholar mode is off")
  }
}

【讨论】:

  • 感谢您的帮助,现在代码运行了,但我的结果只是“未定义”
  • 这可能是我包含“同义词”的方式的问题
【解决方案2】:
searchForSynonymsAndDef = (param) =>{
    if(this.state.scholarMode==true){
    console.log("INSIDE SYNONYMS")

    var synonyms = require("synonyms");
    let p = new Promise((resolve,reject,param)=>{
        resolve(synonyms(param,"n"));
    });
    return p;
}else{
    console.log("sorry scholar mode is off")
}
}

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 2019-05-23
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2019-07-30
    相关资源
    最近更新 更多