【发布时间】:2018-09-16 01:53:24
【问题描述】:
我对 JavaScript 还很陌生,我似乎无法在任何地方找到答案。
我想检索 pouchDb get() 返回的 JSON,并能够在查询 db 时使用的 promise 函数之外使用该数据。
这是我迄今为止/已经尝试过的:
var row;
db.get(id)
.then(function(doc){
row = JSON.parse(JSON.stringify(doc));
})
.catch(function(err){
console.log(err)
})
console.log(row) //logs undefined
我也出于某种原因随机尝试了这个,得到了意想不到的结果。
var myArray = []
var row;
db.get(id)
.then(function(doc){
row = JSON.parse(JSON.stringify(doc));
myArray.push(row)
console.log(myArray) //logs Array(1)> 0: Object> my JSON!
console.log(myArray[0]) //logs Object > my JSON!
console.log(myArray[0]._id) //logs My id from my db item
})
.catch(function(err){
console.log(err)
})
console.log(myArray) //logs Array(1) > 0: Object > my JSON!
console.log(myArray[0]) //logs undefined
console.log(myArray[0]._id) //throws Uncaught TypeError: Cannot read property '_id' of undefined + wall of red text
我希望这是有道理的——我也可能从根本上误解了 javascript 的工作原理。
【问题讨论】:
-
db.get(id) .then... .then 回调中的代码始终是异步的 -
logs Array(1) > 0: Object > my JSON!- 对象的控制台输出不是“静态的”......也就是说,当您在控制台中查看输出时,异步代码已经运行,所以在控制台中它看起来就像 myArray 不是空的......但它是在执行 console.log 时 - 只是“同时”添加了一些东西
标签: javascript promise javascript-objects pouchdb