反应状态变量的Javascript承诺返回变量

反应状态变量的Javascript承诺返回变量,javascript,reactjs,Javascript,Reactjs,我使用的是请求npm包,它只是一个包装在HTTP调用中的承诺。我在过去的承诺中遇到过问题。如何获得返回值的承诺,以便在react中使用它,或获得在该承诺内设置react状态变量的承诺?我需要API调用中的特定数字来设置react状态变量 对于这样的代码 request(options, function (error, response, body) { if (error) throw new Error(error); console.log(Number(J

我使用的是请求npm包,它只是一个包装在HTTP调用中的承诺。我在过去的承诺中遇到过问题。如何获得返回值的承诺,以便在react中使用它,或获得在该承诺内设置react状态变量的承诺?我需要API调用中的特定数字来设置react状态变量

对于这样的代码

request(options, function (error, response, body) {
        if (error) throw new Error(error);
        console.log(Number(JSON.stringify(body).split(",")[2].split(":")[1]);
    });

我过去常常得到回报。然后使用和使用整齐放置的返回语句来实现一个可靠的闭包

Massfunc = async () => {
    var that = this;
    var promise = rp(options).then(function (body) {
        let returnedValue = Number(JSON.stringify(body).split(",")[2].split(":")[1]);
        that.setState({num: returnedValue});
        return returnedValue;
    }).catch(function (err) {
        console.log(err);
    });
    return promise;
  }

您的第二个代码段应该设置为state。但是为什么要在JSON字符串上使用
.split(“,”[2].split(“:”[1]
,为什么不直接从javascript对象获取值呢?例如,如果对象是
{key1:3,key2:4,key3:1}
您只需执行
{numberfoHeadBlock:body.key3}
即可,它在当前上下文中返回一个未定义的值。
Massfunc = async () => {
    var that = this;
    var promise = rp(options).then(function (body) {
        let returnedValue = Number(JSON.stringify(body).split(",")[2].split(":")[1]);
        that.setState({num: returnedValue});
        return returnedValue;
    }).catch(function (err) {
        console.log(err);
    });
    return promise;
  }