我正在尝试在承诺解决时在承诺内返回一个值,然后将返回的值传递给我的状态。但是,无论尝试什么,函数的返回值都是不确定的。
我的函数是从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")
}
}
我希望'结果'是基于传入的参数的同义词,但是不幸的是,结果总是= undefined:(
答案 0 :(得分:0)
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")
}
}
答案 1 :(得分:0)
您无需传递参数即可承诺。只需从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")
}
}