繁体   English   中英

从Dexie许诺中获得价值

[英]Getting a value from Dexie promise

尝试使用Dexie.JS获取以下函数返回的数据:

function findEvent(key) {
  let snippet = '';
  if (!db.isOpen()) {
    lastEvent = lastEvent.then(() => db.open());
  }
  lastEvent = lastEvent.then(() => db.transaction('r', db.events, () => {
    db.events.each((element) => {
      let d = element.cause.data;
      if (d.hasOwnProperty('deleted') && (false == d.deleted) && d.hasOwnProperty('abbreviation') && 
        d.hasOwnProperty('contents') && (d.abbreviation == key)) {
          console.log(`found matching snippet for key: ${key}, contents: ${d.contents}`);
          snippet = d.contents;
      }
    }).then(() => {
      console.log('search callback returning:', snippet);
      return snippet;
    });
  }));

  return lastEvent;
}

我称其为:

  return findEvent(request.key).then((result) => {
    console.log(`findEvent return: ${result}`);
  });

显然,我做错了。 我的诺言以正确的顺序执行。 我从findEvent内部将日志snippet正确打印在日志中。 result记录在调用代码中时,它是undefined

应该做些什么?

您不会从db.events.each return诺言,因此未定义的信息会db.events.each到您的顶级诺言中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM