您好我已经尝试从pouch db local database中获取数据。
这是我的代码。
function test(){
var jsondata;
var deviceId = localStorage.getItem("deviceId");
localDB.get(deviceId).then(function(doc){
jsondata = doc.data;
});
return jsondata}
test();
这里我可以在get函数中获取控制台数据,但是从最后一行我得到了未定义。
答案 0 :(得分:0)
在解析promise之后执行函数内部的部分。
最后console.log
在localDB.get
语句后立即执行。此时,承诺尚未解决,回调尚未执行,因此尚未设置jsondata
的值 - 将undefined
作为jsondata
的值
修改1:
var jsondata;
var deviceId = localStorage.getItem("deviceId");
localDB.get(deviceId).then(function(doc){
jsondata = doc.data;
console.log(jsondata)
// whatever you want to do with `jsondata`,
// do it here
});
// not here
编辑2:
如果要将此代码放在函数中,则应返回promise本身。所以你的代码变成了:
function getDoc(){
var deviceId = localStorage.getItem("deviceId");
return localDB.get(deviceId);
}
现在使用代码中.then()
的{{1}}解决此承诺,您需要使用jsondata
.
.
getDoc().then(function(doc){
// your code that needs to use the document
});
.
.