From af42895dc7d8e2542ce59b6d7587183fcbe9cb32 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Tue, 24 Mar 2020 10:21:20 +0800 Subject: [PATCH] refactor(v3): onNativeEventReceive --- src/core/helpers/api.js | 20 ++++++++-------- .../api/plugin/on-native-event-receive.js | 23 +++++++++++-------- .../app-plus/service/framework/app.js | 11 ++------- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/core/helpers/api.js b/src/core/helpers/api.js index 3ca954d8..59b08608 100644 --- a/src/core/helpers/api.js +++ b/src/core/helpers/api.js @@ -87,8 +87,8 @@ function createKeepAliveApiCallback (apiName, callback) { const callbackId = invokeCallbackId++ const invokeCallbackName = 'api.' + apiName + '.' + callbackId - const invokeCallback = function (res) { - callback(res) + const invokeCallback = function (res, extras) { + callback(res, extras) } invokeCallbacks[callbackId] = { @@ -163,11 +163,11 @@ function createApiCallback (apiName, params = {}, extras = {}) { res.errMsg = apiName + ':ok' } else if (res.errMsg.indexOf(':cancel') !== -1) { res.errMsg = apiName + ':cancel' - } else if (res.errMsg.indexOf(':fail') !== -1) { - let errDetail = '' - let spaceIndex = res.errMsg.indexOf(' ') - if (spaceIndex > -1) { - errDetail = res.errMsg.substr(spaceIndex) + } else if (res.errMsg.indexOf(':fail') !== -1) { + let errDetail = '' + let spaceIndex = res.errMsg.indexOf(' ') + if (spaceIndex > -1) { + errDetail = res.errMsg.substr(spaceIndex) } res.errMsg = apiName + ':fail' + errDetail } @@ -232,15 +232,15 @@ function createInvokeCallback (apiName, params = {}, extras = {}) { callbackId } } - -export function invokeCallbackHandler (invokeCallbackId, res) { +// onNativeEventReceive((event,data)=>{}) 需要两个参数,写死最多两个参数,避免改动太大,影响已有逻辑 +export function invokeCallbackHandler (invokeCallbackId, res, extras) { if (typeof invokeCallbackId === 'number') { const invokeCallback = invokeCallbacks[invokeCallbackId] if (invokeCallback) { if (!invokeCallback.keepAlive) { delete invokeCallbacks[invokeCallbackId] } - return invokeCallback.callback(res) + return invokeCallback.callback(res, extras) } } return res diff --git a/src/platforms/app-plus/service/api/plugin/on-native-event-receive.js b/src/platforms/app-plus/service/api/plugin/on-native-event-receive.js index a0aa545d..645d1a73 100644 --- a/src/platforms/app-plus/service/api/plugin/on-native-event-receive.js +++ b/src/platforms/app-plus/service/api/plugin/on-native-event-receive.js @@ -1,16 +1,19 @@ import { - isFn -} - from 'uni-shared' + invoke +} from 'uni-core/service/bridge' + +import { + onMethod +} from 'uni-core/service/platform' const callbacks = [] -export function onNativeEventReceive (callback) { - isFn(callback) && - callbacks.indexOf(callback) === -1 && - callbacks.push(callback) -} +onMethod('uniMPNativeEvent', function (res) { + callbacks.forEach(callbackId => { + invoke(callbackId, res.event, res.data) + }) +}) -export function consumeNativeEvent (event, data) { - callbacks.forEach(callback => callback(event, data)) +export function onNativeEventReceive (callbackId) { + callbacks.push(callbackId) } diff --git a/src/platforms/app-plus/service/framework/app.js b/src/platforms/app-plus/service/framework/app.js index deea694a..df59f0c8 100644 --- a/src/platforms/app-plus/service/framework/app.js +++ b/src/platforms/app-plus/service/framework/app.js @@ -35,10 +35,6 @@ import { backbuttonListener } from './backbutton' -import { - consumeNativeEvent -} from '../api/plugin/on-native-event-receive' - let appCtx const defaultApp = { @@ -96,11 +92,8 @@ function initGlobalListeners () { }) }) - globalEvent.addEventListener('uniMPNativeEvent', function ({ - event, - data - }) { - consumeNativeEvent(event, data) + globalEvent.addEventListener('uniMPNativeEvent', function (event) { + publish('uniMPNativeEvent', event) }) plus.globalEvent.addEventListener('plusMessage', onPlusMessage) -- GitLab