安装
npm install node-plug
使用示例:
export const pluginsync = { run() { console.log('plugin sync dijalankan!') }, } export const plugincallback = { run() { console.log('plugin callback mulai...') settimeout(() => console.log('plugin callback selesai!'), 15) }, } export const pluginpromise = { async run() { console.log('plugin promise mulai...') await new promise((resolve) => settimeout(resolve, 15)) console.log('plugin promise selesai!') }, }
import { addplugin, runplugin, test } from 'node-plug' import { pluginsync, plugincallback, pluginpromise } from './plugin.js' // menambahkan plugin addplugin(pluginsync) addplugin(plugincallback) addplugin(pluginpromise) // menjalankan plugin runplugin() // melakukan pengujian test([ 'plugin sync dijalankan!', 'plugin callback mulai...', 'plugin promise mulai...', 'plugin callback selesai!', 'plugin promise selesai!', ])
上面的代码工作正常,但是如果没有 promise 插件,就会发生错误。
由于没有 promise 插件而导致的错误
为什么会出现错误?因为 runplugin 方法返回一个承诺。
解决方案:
为 promise 插件添加同步和回调插件。
const pluginsync = { run() { console.log('plugin sync dijalankan!') }, } const plugincallback = { run() { console.log('plugin callback mulai...') }, } export const pluginpromise = { async run() { pluginsync.run() plugincallback.run() await new promise((resolve) => settimeout(resolve, 15)) console.log('plugin callback selesai!') }, } // atau /*const pluginsync = { run() { console.log('plugin sync mulai...') }, } const plugincallback = { run() { console.log('plugin callback mulai...') }, } export const pluginpromise = { async run() { pluginsync.run() await new promise((resolve) => settimeout(resolve, 15)) console.log('plugin sync selesai!') plugincallback.run() await new promise((resolve) => settimeout(resolve, 15)) console.log('plugin callback selesai!') }, }*/ // atau /*const pluginsync = { run() { console.log('plugin sync mulai...') }, } const plugincallback = { run() { console.log('plugin callback mulai...') }, } export const pluginpromise = { async run() { pluginsync.run() await new promise((resolve) => settimeout(resolve, 15)) console.log('plugin sync selesai!') plugincallback.run() await new promise((resolve) => settimeout(resolve, 15)) console.log('plugin callback selesai!') console.log('plugin promise mulai...') await new promise((resolve) => settimeout(resolve, 15)) console.log('plugin promise selesai!') }, }*/
import { addPlugin, runPlugin, test } from 'node-plug' import { pluginPromise } from './plugin.js' // Menambahkan plugin addPlugin(pluginPromise) // Menjalankan plugin runPlugin() // Melakukan pengujian test([ 'Plugin sync dijalankan!', 'Plugin callback mulai...', 'Plugin callback selesai!', ]) // atau /*import { addPlugin, runPlugin, test } from 'node-plug' import { pluginPromise } from './plugin.js' // Menambahkan plugin addPlugin(pluginPromise) // Menjalankan plugin runPlugin() // Melakukan pengujian test([ 'Plugin sync mulai...', 'Plugin sync selesai!', 'Plugin callback mulai...', 'Plugin callback selesai!', ])*/ // atau /*import { addPlugin, runPlugin, test } from 'node-plug' import { pluginPromise } from './plugin.js' // Menambahkan plugin addPlugin(pluginPromise) // Menjalankan plugin runPlugin() // Melakukan pengujian test([ 'Plugin sync mulai...', 'Plugin sync selesai!', 'Plugin callback mulai...', 'Plugin callback selesai!', 'Plugin Promise mulai...', 'Plugin Promise selesai!', ])*/