JavaScript 对象未定义

javascript object undefined

本文关键字:未定义 对象 JavaScript      更新时间:2023-09-26
$.couch.urlPrefix = "http://192.168.0.5:5984";
var db = $.couch.db("disastri");
var doc;
 db.openDoc("esempio",{
  success: function(data){
   doc = data;
  },
  error: function(err){
   alert("ERRORE: " + err);
  },
  attachments: true
});
console.log(doc);

为什么?对象文档未定义?如果我尝试将 doc 初始化为空对象,doc 的值仍然是空对象。我确定这不称为错误函数,因为浏览器不向我显示警报窗口。

db.openDoc() - 这是异步调用,这意味着下一个操作员控制台.log(doc)不会等待它完成并在回调函数成功错误调用之前运行。

console.log() 放入回调:

var doc;
 db.openDoc("esempio",{
  success: function(data){
   doc = data;
   console.log(doc); // <--- HERE
  },
  error: function(err){
   alert("ERRORE: " + err);
  },
  attachments: true
});

现在它将在 openDoc() 完成并定义文档时调用。

db.openDoc异步工作 - 这意味着JS解释器不会等待db.openDoc执行其工作。它启动异步函数,并继续执行以下代码行 - 而异步仍然有效。因此,在这种情况下,console.log(doc);db.openDoc之前执行。您需要做的是将日志调用移动到success回调中:

$.couch.urlPrefix = "http://192.168.0.5:5984";
var db = $.couch.db("disastri");
var doc;
db.openDoc("esempio", {
    success: function(data){
        doc = data;
        console.log(doc);
    },
    error: function(err){
        alert("ERRORE: " + err);
    },
    attachments: true
});