承诺执行函数返回未定义
promise executing function returning undefined
我试图在承诺解决时 return 承诺中的一个值,然后将 returned 值传递给我的状态。但是,无论我尝试什么,我的函数的 return 值都是未定义的。
我的函数是从一个 npm 包导入的,该包在此处有其文档:
https://www.npmjs.com/package/synonyms
它意味着 return 给定单词的同义词。
也许我构造 promise 本身的方式存在一些非常明显的问题,导致一些错误的异步计时?
我已经尝试 return 仅调用函数而不将其传递给 resolve 但这会引发错误
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 :(
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")
}
}
你不需要传递参数来承诺。只需从 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")
}
}
我试图在承诺解决时 return 承诺中的一个值,然后将 returned 值传递给我的状态。但是,无论我尝试什么,我的函数的 return 值都是未定义的。
我的函数是从一个 npm 包导入的,该包在此处有其文档: https://www.npmjs.com/package/synonyms
它意味着 return 给定单词的同义词。
也许我构造 promise 本身的方式存在一些非常明显的问题,导致一些错误的异步计时?
我已经尝试 return 仅调用函数而不将其传递给 resolve 但这会引发错误
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 :(
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")
}
}
你不需要传递参数来承诺。只需从 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")
}
}