NodeJS 从then/catch块为局部变量赋值[重复]

ttcibm8c  于 2023-03-07  发布在  Node.js
关注(0)|答案(1)|浏览(233)
    • 此问题在此处已有答案**:

(41个答案)
Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference(7个答案)
2小时前关门了。
我正在尝试编写一个从GoogleMaps API获取数据的Web应用程序。API响应在then/catch块中是正确的;

var axios = require('axios')

var config = {
    method: "get",
    url: httpRequest,
    header: { }
};

axios(config)
.then(function(response){
    console.log(JSON.stringify(response.data))
})
.catch(function(error){
    console.log(error)
})

其中console.log运行得非常好。我想创建一个本地对象responseData,并在***then***块之外使用该对象。

var axios = require('axios')

let localObject ;

var config = {
    method: "get",
    url: httpRequest,
    header: { }
};

axios(config)
.then(function(response){
    console.log(JSON.stringify(response.data))
    localObject = response.data;
})
.catch(function(error){
    console.log(error)
})

console.log(JSON.stringify(localObject)) // Local Object undefined error

如何使用www.example.com指定localObjectresponse.data?

wgx48brx

wgx48brx1#

变量“localObject”被赋值为response.data值,但是记录该变量的行在赋值之前被调用,因为JS是非阻塞的,并且“then”内部的内容稍后在前台运行,与其他内容在同一线程上运行。
在变量赋值后,您可以在“then”中控制.log(JSON.stringify(localObject)),然后在同一作用域中使用它。

var axios = require('axios')

let localObject ;

var config = {
    method: "get",
    url: httpRequest,
    header: { }
};

axios(config)
.then(function(response){
    console.log(JSON.stringify(response.data))
    localObject = response.data;
}).then(function(response){
// Use localObject variable here it will be assigned
})
.catch(function(error){
    console.log(error)
})

console.log(JSON.stringify(localObject)) // Local Object undefined error

或者使用异步,这样等待

function async axios(){

var axios = require('axios')

var config = {
    method: "get",
    url: httpRequest,
    header: { }
};

let localObject =await JSON.stringify(axios(config)
)}

相关问题