Commit 047b16e0 authored by liupengfei's avatar liupengfei

栗子

parent 1cb76ffa
/* /*
* @Author: flyharvest * @Author: flyharvest
* @Date: 2020-07-15 15:50:45 * @Date: 2020-07-15 15:50:45
* @LastEditTime: 2020-07-19 14:09:11 * @LastEditTime: 2020-07-20 15:38:44
* @LastEditors: flyharvest * @LastEditors: flyharvest
*/ */
/* eslint-disable*/ /* eslint-disable*/
import $ from 'jquery' import $ from 'jquery'
import { normallizeOptions, normallizeEvent, WATERFALL, ASYNCWATERFALL } from '@lib/utils' import { createHooks } from '@lib/utils'
import './index.less' import './index.less'
class CouponModal { class CouponModal {
constructor(opts) { constructor() {
this.hooksDefine = [ this.hooksDefine = [
{ name: 'confirmClick', type: 1 }, 'confirmClick',
{ name: 'closeClick', type: 1 }, 'closeClick',
{ name: 'afterClose', type: 1 }, 'afterClose',
{ name: 'contentClose', type: 1 }, 'contentClick',
{ name: 'replaceHtml', type: 2 }, 'replaceHtml',
{ name: 'getDom', type: 4} 'modifyDom'
] ]
this.hooks = normallizeOptions(opts, this.hooksDefine) this.hooks = createHooks(this.hooksDefine)
this.allHooksName = this.getHooksName(this.hooksDefine)
this.isShow = false this.isShow = false
this.el = null this.el = null
this.resolve = null this.resolve = null
this.showPromsie = null this.showPromsie = null
} }
getHooksName (hooksDefine) {
return hooksDefine.map(e => e.name)
}
init () {
const dom = `
<div class="wrapper">
<div class="content">广告</div>
<div class="close">关闭</div>
<div class="confirm">领奖</div>
</div>
`
return Promise.resolve(dom)
}
show (data, opts = {}) {
this.tempHooks = normallizeOptions(opts, this.hooksDefine)
this.data = data
this.showPromise = new Promise(resolve => {
this.resolve = resolve
})
const domResolve = (content) => {
return this.resolve(Object.assign({
isCustom: true
}, content))
}
// 不用默认的弹层,替换自定义弹层。
this.hooks.getDom({couponModalResolve: domResolve})
.then(mid => {
console.log(mid)
this.tempHooks.getDom(mid)
.then(res => {
console.log(res)
if (res.isReplaced) {
//
} else {
this.init(data)
.then(dom => {
this.el = $(dom)
let mid = this.hooks.replaceHtml(this.el)
this.el = this.tempHooks.replaceHtml(mid)
this.events()
$('body').append(this.el)
})
}
})
})
return this.showPromise
}
events() {
const confirm = $(this.el).find('.confirm')
const close = $(this.el).find('.close')
const content = $(this.el).find('.content')
$(content).on('click', () => {
const mid = this.hooks.contentClick()
const res = this.tempHooks.contentClick(mid)
if (res === true) {
this.close('contentClick')
}
})
$(confirm).on('click', () => {
const mid = this.hooks.confirmClick()
const res = this.tempHooks.confirmClick(mid)
if (res === true || res === undefined) {
this.close('confirmClick')
}
})
$(close).on('click', () => {
const mid = this.hooks.closeClick()
const res = this.tempHooks.closeClick(mid)
if (res === true || res === undefined) {
this.close('closeClick')
}
})
}
close (source) {
this.el.remove()
this.resolve({
type: source,
data: this.data
})
}
}
class CouponModalEvent {
constructor(opts) {
this.hooksDefine = [
{ name: 'confirmClick', type: WATERFALL },
{ name: 'closeClick', type: WATERFALL },
{ name: 'afterClose', type: WATERFALL },
{ name: 'contentClose', type: WATERFALL },
{ name: 'replaceHtml', type: WATERFALL },
{ name: 'getDom', type: ASYNCWATERFALL}
]
this.hooks = normallizeEvent(this.hooksDefine)
this.allHooksName = this.getHooksName(this.hooksDefine)
this.isShow = false
this.el = null
this.resolve = null
this.showPromsie = null
}
getHooksName (hooksDefine) {
return hooksDefine.map(e => e.name)
}
init () { init () {
const dom = ` const dom = `
<div class="wrapper"> <div class="wrapper">
...@@ -144,7 +36,7 @@ class CouponModalEvent { ...@@ -144,7 +36,7 @@ class CouponModalEvent {
` `
return Promise.resolve(dom) return Promise.resolve(dom)
} }
show (data) { start (data) {
this.data = data this.data = data
this.showPromise = new Promise(resolve => { this.showPromise = new Promise(resolve => {
this.resolve = resolve this.resolve = resolve
...@@ -155,18 +47,20 @@ class CouponModalEvent { ...@@ -155,18 +47,20 @@ class CouponModalEvent {
}, content)) }, content))
} }
// 不用默认的弹层,替换自定义弹层。 // 不用默认的弹层,替换自定义弹层。
this.hooks.getDom.promise({couponModalResolve: domResolve}) this.hooks.replaceHtml.promise({couponModalResolve: domResolve})
.then(res => { .then(res => {
if (res.isReplaced) { if (res && res.isReplaced) {
} else { } else {
this.init(data) this.init(data)
.then(dom => { .then(dom => {
this.el = $(dom) this.el = $(dom)
this.el = this.hooks.replaceHtml.call(this.el) this.hooks.modifyDom.promise({el: this.el})
.then(() => {
this.events() this.events()
$('body').append(this.el) $('body').append(this.el)
}) })
})
} }
}) })
return this.showPromise return this.showPromise
...@@ -178,25 +72,31 @@ class CouponModalEvent { ...@@ -178,25 +72,31 @@ class CouponModalEvent {
const content = $(this.el).find('.content') const content = $(this.el).find('.content')
$(content).on('click', () => { $(content).on('click', () => {
let res = this.hooks.closeClick.call() this.hooks.closeClick.promise()
.then(res => {
if (res === true) { if (res === true) {
this.close('contentClick') this.close('contentClick')
} }
}) })
})
$(confirm).on('click', () => { $(confirm).on('click', () => {
let res = this.hooks.closeClick.call() this.hooks.closeClick.promise()
.then(res => {
if (res === true || res === undefined) { if (res === true || res === undefined) {
this.close('confirmClick') this.close('confirmClick')
} }
}) })
})
$(close).on('click', () => { $(close).on('click', () => {
let res = this.hooks.closeClick.call() this.hooks.closeClick.promise()
.then(res => {
if (res === true || res === undefined) { if (res === true || res === undefined) {
this.close('closeClick') this.close('closeClick')
} }
}) })
})
} }
close (source) { close (source) {
...@@ -210,6 +110,5 @@ class CouponModalEvent { ...@@ -210,6 +110,5 @@ class CouponModalEvent {
} }
export { export {
CouponModal, CouponModal
CouponModalEvent
} }
...@@ -2,13 +2,11 @@ ...@@ -2,13 +2,11 @@
/* /*
* @Author: flyharvest * @Author: flyharvest
* @Date: 2020-07-15 11:38:44 * @Date: 2020-07-15 11:38:44
* @LastEditTime: 2020-07-19 13:56:30 * @LastEditTime: 2020-07-20 16:54:19
* @LastEditors: flyharvest * @LastEditors: flyharvest
*/ */
import { import {
normallizeOptions, createHooks
normallizeEvent,
WATERFALL
} from '@lib/utils' } from '@lib/utils'
// mock 是否需要增值 // mock 是否需要增值
...@@ -19,240 +17,128 @@ function enable () { ...@@ -19,240 +17,128 @@ function enable () {
const source = 'handleDojoin' const source = 'handleDojoin'
class HandleDojoin { class HandleDojoin {
constructor (opts = {}) { constructor () {
this.hooksDefine = [ this.hooksDefine = ['mediaMsg', 'afterHandleDojoin']
{ name: 'mediaMsg', type: 1 } this.hooks = createHooks(this.hooksDefine)
]
this.hooks = normallizeOptions(opts, [
{ name: 'mediaMsg', type: 1 }
])
this.allHooksName = this.getHooksName(this.hooksDefine)
} }
getHooksName (hooksDefine) { start (res) {
return hooksDefine.map(e => e.name)
}
handle (res, opts = {}) {
this.tempHooks = normallizeOptions(opts, this.hooksDefine)
// 声明自己的promise // 声明自己的promise
let solve let solve
const handlePromise = new Promise(resolve => { const handlePromise = new Promise(resolve => {
solve = resolve solve = resolve
}) })
const { success, data, code } = res const { success, data, code } = res
let modalType = {}
let mediaMsg = ''
if (success) { if (success) {
const { result } = data const { result } = data
const { lottery, creditsConsumeAlertMsg } = result const { lottery, creditsConsumeAlertMsg } = result
creditsConsumeAlertMsg && this.hooks.mediaMsg(creditsConsumeAlertMsg) && this.tempHooks.mediaMsg(creditsConsumeAlertMsg) mediaMsg = creditsConsumeAlertMsg
if (enable() && ['lucky', 'thanks', 'coupon'].includes(lottery.type)) { if (enable() && ['lucky', 'thanks', 'coupon'].includes(lottery.type)) {
solve({ modalType = {
type: 'showIncitve', type: 'showIncitve',
data: data, data: data,
source source
}) }
} else { } else {
switch (lottery.type) { switch (lottery.type) {
case 'lucky': case 'lucky':
case 'coupon': case 'coupon':
solve({ modalType = {
type: 'showCoupon', type: 'showCoupon',
data, data,
source source
}) }
break break
case 'thanks': case 'thanks':
solve({ modalType = {
type: 'showThanks', type: 'showThanks',
data, data,
source source
}) }
break break
case 'alipay': case 'alipay':
solve({ modalType = {
type: 'showAlipay', type: 'showAlipay',
data, data,
source source
}) }
break break
case 'qb': case 'qb':
solve({ modalType = {
type: 'showQb', type: 'showQb',
data, data,
source source
}) }
break break
case 'bill': case 'bill':
solve({ modalType = {
type: 'showBill', type: 'showBill',
data, data,
source source
}) }
break break
case 'virtual': case 'virtual':
solve({ modalType = {
type: 'showVirtual', type: 'showVirtual',
data, data,
source source
}) }
break break
case 'physical': case 'physical':
solve({ modalType = {
type: 'showVirtual', type: 'showVirtual',
data, data,
source source
}) }
break break
default: default:
solve({ modalType = {
type: 'showEror', type: 'showEror',
data, data,
source source
}) }
break break
} }
} }
} else if (code === '0100001') { } else if (code === '0100001') {
solve({ modalType = {
type: 'showRecomend', type: 'showRecomend',
data, data,
source source
}) }
} else if (code === '0200004') { } else if (code === '0200004') {
solve({ modalType = {
type: 'showPreview', type: 'showPreview',
data, data,
source source
})
} else {
solve({
type: 'showError',
data,
source
})
} }
return handlePromise
}
}
class HandleDojoinEvent {
constructor (opts = {}) {
this.hooksDefine = [
{ name: 'mediaMsg', type: WATERFALL }
]
this.hooks = normallizeEvent([
{ name: 'mediaMsg', type: WATERFALL }
])
this.allHooksName = this.getHooksName(this.hooksDefine)
}
getHooksName (hooksDefine) {
return hooksDefine.map(e => e.name)
}
handle (res) {
// 声明自己的promise
let solve
const handlePromise = new Promise(resolve => {
solve = resolve
})
const { success, data, code } = res
if (success) {
const { result } = data
const { lottery, creditsConsumeAlertMsg } = result
creditsConsumeAlertMsg && this.hooks.mediaMsg(creditsConsumeAlertMsg)
if (enable() && ['lucky', 'thanks', 'coupon'].includes(lottery.type)) {
solve({
type: 'showIncitve',
data: data,
source
})
} else { } else {
switch (lottery.type) { modalType = {
case 'lucky': type: 'showError',
case 'coupon':
solve({
type: 'showCoupon',
data,
source
})
break
case 'thanks':
solve({
type: 'showThanks',
data,
source
})
break
case 'alipay':
solve({
type: 'showAlipay',
data,
source
})
break
case 'qb':
solve({
type: 'showQb',
data,
source
})
break
case 'bill':
solve({
type: 'showBill',
data,
source
})
break
case 'virtual':
solve({
type: 'showVirtual',
data,
source
})
break
case 'physical':
solve({
type: 'showVirtual',
data,
source
})
break
default:
solve({
type: 'showEror',
data, data,
source source
})
break
} }
} }
} else if (code === '0100001') { if (mediaMsg) {
solve({ return this.hooks.mediaMsg.promise(mediaMsg)
type: 'showRecomend', .then(() => {
data, this.hooks.afterHandleDojoin.promise(modalType)
source .then(res => {
solve(res)
}) })
} else if (code === '0200004') {
solve({
type: 'showPreview',
data,
source
}) })
} else { } else {
solve({ this.hooks.afterHandleDojoin.promise(modalType)
type: 'showError', .then(res => {
data, solve(res)
source
}) })
} }
return handlePromise return handlePromise
} }
} }
export { export {
HandleDojoin, HandleDojoin
HandleDojoinEvent
} }
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
/* /*
* @Author: flyharvest * @Author: flyharvest
* @Date: 2020-07-15 09:46:20 * @Date: 2020-07-15 09:46:20
* @LastEditTime: 2020-07-19 12:41:12 * @LastEditTime: 2020-07-20 15:43:40
* @LastEditors: flyharvest * @LastEditors: flyharvest
*/ */
import { normallizeOptions, CustomError, WATERFALL, normallizeEvent} from '@lib/utils' import { createHooks } from '@lib/utils'
var http = null var http = null
var params = {} var params = {}
...@@ -18,82 +18,33 @@ function use (ajax, opts = {}) { ...@@ -18,82 +18,33 @@ function use (ajax, opts = {}) {
} }
class DoJoin { class DoJoin {
constructor (opts = {}) { constructor () {
this.hooksDefine = [ this.hooksDefine = ['beforeDojoin', 'afterDojoin']
{ this.hooks = createHooks(this.hooksDefine)
name: 'beforeDojoin',
type: 1
}
]
this.hooks = normallizeOptions(opts, this.hooksDefine)
this.allHooksName = this.getHooksName(this.hooksDefine)
}
getHooksName (hooksDefine) {
return hooksDefine.map(e => e.name)
}
start (opts = {}) {
this.tempHooks = normallizeOptions(opts, this.hooksDefine)
let data = {
ownData: '测试'
}
// 请求前给默认配置的钩子
const mid = this.hooks.beforeDojoin(data)
// 给临时传递进来的钩子
data = this.tempHooks.beforeDojoin(mid)
return http.get('/activity/doJoin', { data }).then(res => {
return res
}).catch((err) => {
return Promise.reject(new CustomError({
name: 'toast',
message: '获取网络失败',
source: 'services',
raw: err
}))
})
}
}
class DoJoinEvent {
constructor() {
this.hooksDefine = [
{
name: 'beforeDojoin',
type: WATERFALL
}
]
this.hooks = normallizeEvent(this.hooksDefine)
this.allHooksName = this.getHooksName(this.hooksDefine)
}
getHooksName(hooksDefine) {
return hooksDefine.map(e => e.name)
} }
start () { start () {
let data = { let data = {
ownData: '测试' ownData: '测试'
} }
data = this.hooks.beforeDojoin.call(data) console.log(this.hooks.beforeDojoin)
return http.get('/activity/doJoin', { data }).then(res => { return this.hooks.beforeDojoin.promise(data)
return res .then(beforeDojoin => {
}).catch((err) => { data = beforeDojoin ? beforeDojoin : data
return Promise.reject(new CustomError({ return http.get('/activity/doJoin', {data})
name: 'toast', .then(doJoinResult => {
message: '获取网络失败', return this.hooks.afterDojoin.promise(doJoinResult)
source: 'services', .then(afterDojoin => {
raw: err console.log(afterDojoin)
})) return afterDojoin ? afterDojoin : doJoinResult
})
})
}) })
} }
} }
const services = { const services = {
use, use,
DoJoin, DoJoin
DoJoinEvent
} }
export default services export default services
/* /*
* @Author: flyharvest * @Author: flyharvest
* @Date: 2020-07-15 09:51:43 * @Date: 2020-07-15 09:51:43
* @LastEditTime: 2020-07-19 16:25:44 * @LastEditTime: 2020-07-20 15:25:57
* @LastEditors: flyharvest * @LastEditors: flyharvest
*/ */
import { SyncWaterfallHook, AsyncSeriesWaterfallHook } from 'tapable' import { AsyncSeriesBailHook } from 'tapable'
const WATERFALL = 'SyncWaterfallHook'
const ASYNCWATERFALL = 'AsyncSeriesWaterfallHook'
function isObject (obj) { function isObject (obj) {
return Object.prototype.toString.call(obj) === '[object Object]' return Object.prototype.toString.call(obj) === '[object Object]'
...@@ -18,73 +16,10 @@ function isFn (fn) { ...@@ -18,73 +16,10 @@ function isFn (fn) {
function noop (data) { return data } function noop (data) { return data }
/** function createHooks (hooksDefine = []) {
* @description: 规范钩子。
* 1. 如果是同步钩子,没有或者不是函数就使用noop。
* 没有返回值,就返回入参
* 2. 如果是异步钩子,没有或者不是函数就直接返回参数。
* 没有then方法,包裹一层promise
* @example:
* @param {type}
* @return:
*/
function normallizeOptions (hookOpts = {}, hooksDefine = []) {
if (!isObject(hookOpts)) {
hookOpts = {}
}
const hooks = {}
hooksDefine.forEach(hook => {
const fn = hookOpts[hook.name]
switch (hook.type) {
// 同步钩子,且忽略返回值
case 1:
case 2:
if (!fn || !isFn(fn)) {
hooks[hook.name] = noop
} else {
hooks[hook.name] = (playload) => {
let result = fn(playload)
result = result === undefined ? playload : result
return result === undefined ? playload : result
}
}
break
case 3:
case 4:
if (fn && isFn(fn) && fn.then) {
hooks[hook.name] = fn
} else if (fn && isFn(fn) && !fn.then) {
hooks[hook.name] = (playload) => {
let result = fn(playload)
result = result === undefined ? playload : result
return Promise.resolve(result)
}
} else {
hooks[hook.name] = (data) => {
return Promise.resolve(data)
}
}
break
default:
break
}
})
return hooks
}
function normallizeEvent (hooksDefine = []) {
const hooks = {} const hooks = {}
hooksDefine.forEach(hook => { hooksDefine.forEach(name => {
switch (hook.type) { hooks[name] = new AsyncSeriesBailHook(['data'])
case WATERFALL:
hooks[hook.name] = new SyncWaterfallHook(['data'])
break
case ASYNCWATERFALL:
hooks[hook.name] = new AsyncSeriesWaterfallHook(['data'])
break
default:
break
}
}) })
return hooks return hooks
} }
...@@ -102,10 +37,7 @@ CustomError.prototype.constructor = CustomError ...@@ -102,10 +37,7 @@ CustomError.prototype.constructor = CustomError
export { export {
isFn, isFn,
isObject, isObject,
normallizeOptions,
noop, noop,
CustomError, CustomError,
normallizeEvent, createHooks
WATERFALL,
ASYNCWATERFALL
} }
...@@ -2,15 +2,15 @@ ...@@ -2,15 +2,15 @@
/* /*
* @Author: flyharvest * @Author: flyharvest
* @Date: 2020-07-14 14:09:40 * @Date: 2020-07-14 14:09:40
* @LastEditTime: 2020-07-20 10:45:36 * @LastEditTime: 2020-07-20 15:54:52
* @LastEditors: flyharvest * @LastEditors: flyharvest
*/ */
import * as rem from '@lib/flexible' import * as rem from '@lib/flexible'
import { ajax } from '@lib/xhr' import { ajax } from '@lib/xhr'
import services from '@lib/services' import services from '@lib/services'
import { HandleDojoinEvent } from '@lib/handleDojoin' import { HandleDojoin } from '@lib/handleDojoin'
import { CouponModalEvent } from '@lib/couponModal' import { CouponModal } from '@lib/couponModal'
import { WATERFALL, isFn } from '@lib/utils' import { isFn } from '@lib/utils'
import $ from 'jquery' import $ from 'jquery'
import './index.less' import './index.less'
...@@ -18,56 +18,46 @@ rem.setViewPort() ...@@ -18,56 +18,46 @@ rem.setViewPort()
rem.init(750, 750) rem.init(750, 750)
services.use(ajax) services.use(ajax)
const DoJoinEvent = services.DoJoinEvent const Dojoin = services.DoJoin
const dojoin = new DoJoinEvent() const dojoin = new Dojoin()
const couponModal = new CouponModalEvent() const couponModal = new CouponModal()
const handleDojoin = new HandleDojoinEvent() const handleDojoin = new HandleDojoin()
const handOut = (opts, sign) => { const handOut = (opts, sign, external = {}) => {
const steam = [dojoin, handleDojoin, couponModal] const steam = [dojoin, handleDojoin, couponModal]
steam.forEach(e => { steam.forEach(e => {
e.hooksDefine.forEach(hooksDesc => { e.hooksDefine.forEach(name => {
if (hooksDesc.type === WATERFALL) {
const cb = (data) => { const cb = (data) => {
const fn = opts[hooksDesc.name] const fn = opts[name]
if (fn && isFn(fn)) {
return fn(data)
}
}
e.hooks[hooksDesc.name].tap(sign, cb)
} else {
const cb = (data) => {
const fn = opts[hooksDesc.name]
if (fn && isFn(fn) && fn.then) { if (fn && isFn(fn) && fn.then) {
return fn(data) return fn(data, external[name])
} else if (fn && isFn(fn)) { } else if (fn && isFn(fn)) {
return Promise.resolve(fn(data)) return Promise.resolve(fn(data, external[name]))
} else { } else {
return Promise.resolve(data) return Promise.resolve()
}
} }
e.hooks[hooksDesc.name].tapPromise(sign, cb)
} }
e.hooks[name].tapPromise(sign, cb)
}) })
}) })
} }
const coreMethods = { const coreMethods = {
beforeDojoin () { beforeDojoin (data) {
console.log('我被调用-core')
return { return {
haha: 123123 haha: 123123
} }
}, },
mediaMsg (media) { mediaMsg () {
console.log(media + 'ss') console.log(media + 'ss')
}, },
replaceHtml (data) { modifyDom ({ el }) {
console.log(1) $(el).find('.content').css({
$(data).find('.content').css({
background: 'red' background: 'red'
}) })
} }
...@@ -81,20 +71,28 @@ const coreMethods = { ...@@ -81,20 +71,28 @@ const coreMethods = {
* @return: * @return:
*/ */
const methods = { const methods = {
replaceHtml (data) { beforeDojoin(data) {
console.log('skinDefault') console.log('我被调用了-skinName')
$(data).find('.confirm').css({ return {
lala: '123213'
}
},
modifyDom ({ el }, fn) {
console.log(fn)
$(el).find('.confirm').css({
background: 'green' background: 'green'
}) })
return {el}
} }
} }
handOut(methods, 'skinDefault') handOut(methods, 'skinDefault', coreMethods)
handOut(coreMethods, 'core') handOut(coreMethods, 'core')
let inited = false let inited = false
const tempHandOut = (opts, sign) => { const tempHandOut = (opts, sign, external1 = {}, external2 = {}) => {
if (inited) { if (inited) {
tempHandOut.setOpts(opts) tempHandOut.setOpts(opts)
return return
...@@ -103,34 +101,21 @@ const tempHandOut = (opts, sign) => { ...@@ -103,34 +101,21 @@ const tempHandOut = (opts, sign) => {
tempHandOut.setOpts(opts) tempHandOut.setOpts(opts)
const steam = [dojoin, handleDojoin, couponModal] const steam = [dojoin, handleDojoin, couponModal]
steam.forEach(e => { steam.forEach(e => {
e.hooksDefine.forEach(hooksDesc => { e.hooksDefine.forEach(name => {
if (hooksDesc.type === WATERFALL) {
const cb = (data) => { const cb = (data) => {
const fn = tempHandOut.getOpts()[hooksDesc.name] const fn = tempHandOut.getOpts()[name]
if (fn && isFn(fn)) {
return fn(data)
}
}
e.hooks[hooksDesc.name].tap({
name: sign,
stage: 100
}, cb)
} else {
const cb = (data) => {
const fn = tempHandOut.getOpts()[hooksDesc.name]
if (fn && isFn(fn) && fn.then) { if (fn && isFn(fn) && fn.then) {
return fn(data) return fn(data, external1[name], external2[name])
} else if (fn && isFn(fn)) { } else if (fn && isFn(fn)) {
return Promise.resolve(fn(data)) return Promise.resolve(fn(data, external1[name], external2[name]))
} else { } else {
return Promise.resolve(data) return Promise.resolve()
} }
} }
e.hooks[hooksDesc.name].tapPromise({ e.hooks[name].tapPromise({
name: sign, name: sign,
stage: 100 stage: -1
}, cb) }, cb)
}
}) })
}) })
} }
...@@ -144,17 +129,20 @@ tempHandOut.getOpts = () => { ...@@ -144,17 +129,20 @@ tempHandOut.getOpts = () => {
const $doJoin = (opts = {}) => { const $doJoin = (opts = {}) => {
tempHandOut(opts, 'skinTemp') tempHandOut(opts, 'skinTemp')
return dojoin.start() console.log(dojoin)
.then(res => { return dojoin.start().then(res => {
return handleDojoin.handle(res) return handleDojoin.start(res)
}) })
.then(res => { .then(res => {
return couponModal.show(res) return couponModal.start(res)
})
.then((data) => {
console.log(data)
}) })
} }
let times = 0 let times = 0
const getDom = ({ couponModalResolve }) => { const replaceHtml = ({ couponModalResolve }) => {
console.log(++times) console.log(++times)
const loading = $('<div class="loading"></div>') const loading = $('<div class="loading"></div>')
loading.text('加载中...') loading.text('加载中...')
...@@ -175,18 +163,23 @@ const getDom = ({ couponModalResolve }) => { ...@@ -175,18 +163,23 @@ const getDom = ({ couponModalResolve }) => {
}, 2000) }, 2000)
}) })
} }
$doJoin() $doJoin({
beforeDojoin (data) {
console.log('我被调用了-特殊')
}
})
.then(() => { .then(() => {
return $doJoin({ return $doJoin({
getDom replaceHtml
}) })
}) })
.then(() => { .then(() => {
$doJoin({ $doJoin({
replaceHtml (data) { modifyDom ({el}) {
$(data).find('.close').css({ $(el).find('.close').css({
background: 'blue' background: 'blue'
}) })
return {el}
} }
}) })
}) })
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment