Merge pull request #456 from taldy/nuxtserverinit-promises-improvement

Support other implementations of Promises inside nuxtServerInit (currently only HTML5 Promises works correctly)
This commit is contained in:
Sébastien Chopin 2017-04-06 12:33:29 +02:00 committed by GitHub
commit 5412ddc8d1
4 changed files with 5 additions and 5 deletions

View File

@ -166,7 +166,7 @@ function render (to, from, next) {
}
if (Component.options.fetch) {
var p = Component.options.fetch(context)
if (!(p instanceof Promise)) { p = Promise.resolve(p) }
if (!p || (!(p instanceof Promise) && (typeof p.then !== 'function'))) { p = Promise.resolve(p) }
<%= (loading ? 'p.then(() => this.$loading.increase && this.$loading.increase(30))' : '') %>
promises.push(p)
}
@ -318,7 +318,7 @@ function addHotReload ($component, depth) {
// Call fetch()
Component.options.fetch = Component.options.fetch || noopFetch
let pFetch = Component.options.fetch(context)
if (!(pFetch instanceof Promise)) { pFetch = Promise.resolve(pFetch) }
if (!pFetch || (!(pFetch instanceof Promise) && (typeof pFetch.then !== 'function'))) { pFetch = Promise.resolve(pFetch) }
<%= (loading ? 'pFetch.then(() => this.$loading.increase && this.$loading.increase(30))' : '') %>
promises.push(pFetch)
return Promise.all(promises)

View File

@ -85,7 +85,7 @@ export default context => {
// nuxtServerInit
<% if (store) { %>
let promise = (store._actions && store._actions.nuxtServerInit ? store.dispatch('nuxtServerInit', omit(getContext(context), 'redirect', 'error')) : null)
if (!(promise instanceof Promise)) promise = Promise.resolve()
if (!promise || (!(promise instanceof Promise) && (typeof promise.then !== 'function'))) promise = Promise.resolve()
<% } else { %>
let promise = Promise.resolve()
<% } %>

View File

@ -84,7 +84,7 @@ export function promisify (fn, context) {
} else {
promise = fn(context)
}
if (!(promise instanceof Promise)) {
if (!promise || (!(promise instanceof Promise) && (typeof promise.then !== 'function'))) {
promise = Promise.resolve(promise)
}
return promise

View File

@ -52,7 +52,7 @@ export function promisifyRoute (fn) {
})
}
let promise = fn()
if (!(promise instanceof Promise)) {
if (!promise || (!(promise instanceof Promise) && (typeof promise.then !== 'function'))) {
promise = Promise.resolve(promise)
}
return promise