为了账号安全,请及时绑定邮箱和手机立即绑定

this.book.ready.then(()=>{ this.navigation=this.book.navigation console.log(this.navigation) return this.book.locations.generate()

this.book.ready.then(()=>{

this.navigation=this.book.navigation

console.log(this.navigation)

return this.book.locations.generate()

这个book.ready是epub.js的方法 主要作用是初始化吗?  还有generate()是什么方法?出处是哪里呐?

正在回答

1 回答

你好,这个问题涉及epubjs的实现原理

  • book.ready的用途:

this.book.ready返回的是一个Promise对象,他的作用是让我们可以在Book对象初始化完毕后实现我们自己的逻辑,this.book.ready对应的源码如下:

this.ready = Promise.all([
 this.loaded.manifest,
 this.loaded.spine,
 this.loaded.metadata,
 this.loaded.cover,
 this.loaded.navigation,
 this.loaded.resources
]);

可以看到ready的定义是当manifest、spine、metadata、cover、navigation、resources这些资源都加载完毕后才会执行。


  • Locations.generate()方法的用途:

generate()是Locations对象的一个方法,Locations对象的主要作用是实现电子书的定位,Locations对象在Book对象中进行实例化,实例化的源码如下:

this.locations = new Locations(this.spine, this.load.bind(this));

所以我们需要通过this.book.locations来引用Locations对象,generate()方法的用途是生成分页,其主要用途是根据指定字数进行分页,如果不指定参数时,默认会按照200个字符进行分页,generate()会返回一个Promise对象,你可以打印一下返回结果就知道生成的内容了。

this.book.ready.then(() => {
  return this.book.locations.generate(500)
}).then(location => {
  console.log(location)
})


0 回复 有任何疑惑可以回复我~
#1

qq_梦紫菱_0 提问者

这些是不是要多看一下epub.js的文档?
2018-08-30 回复 有任何疑惑可以回复我~
#2

Sam 回复 qq_梦紫菱_0 提问者

epubjs的官方文档只提供了API,要了解原理要看源码,如果只关注实用,可以看官方提供的案例
2018-08-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
快速入门Web阅读器开发
  • 参与学习       26242    人
  • 解答问题       214    个

带你了解电子书阅读器的工作原理,通过Vue.js快速实现Web阅读器

进入课程

this.book.ready.then(()=>{ this.navigation=this.book.navigation console.log(this.navigation) return this.book.locations.generate()

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信