CN108874523A - 一种基于AI和儿童教育的promise控制异步函数序列的编程方法 - Google Patents
一种基于AI和儿童教育的promise控制异步函数序列的编程方法 Download PDFInfo
- Publication number
- CN108874523A CN108874523A CN201810641264.3A CN201810641264A CN108874523A CN 108874523 A CN108874523 A CN 108874523A CN 201810641264 A CN201810641264 A CN 201810641264A CN 108874523 A CN108874523 A CN 108874523A
- Authority
- CN
- China
- Prior art keywords
- component
- promise
- sequence
- controller
- cancel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种基于AI和儿童教育的promise控制异步函数序列的编程方法,在服务器的控制器中部署promise序列以控制进程;在控制器中部署promise序列以控制多个进程的执行顺序;所述promise序列包括start组件、then组件、next组件、resolve组件、reject组件及cancel组件;本发明在服务器的控制器中部署promise以控制进程;所述控制进程是指多个进程在排队等待执行的过程中,一旦获得取消执行的指令时则取消执行。本发明采用上述方案后,在多进程需要执行的情况下,服务器中处理器中的promise能够保证每个进程按顺序执行,从而提升了单个进程执行的效率,也提高了服务器的管理效率。
Description
技术领域
本发明涉及信息技术领域,尤其涉及一种基于AI和儿童教育的promise控制异步函数序列的编程方法。
背景技术
JavaScript(简称js)是一种网络脚本语言,且已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能。
然而从诞生起它就是执行在单线程之上,面对非异步多任务并发没有好的解决办法,直到2009年服务器语言nodejs出现,这些问题才有所改善。
尽管nodejs是一门服务器语言,它的优点中却没有类似于java等语言的线程,取而代之的是进程(child_process)和协程(generator),它们的高效合作避免了线程的资源争夺问题和资源锁的各种问题(死锁等),加上js本身的高效io处理,nodejs成为了目前最热门的服务端语言之一;虽然如此,但是仍没有解决服务器端的多进程控制模型中非异步多任务并发的问题。
发明内容
本发明针对现有方式的缺点,提出一种基于AI和儿童教育的promise控制异步函数序列的编程方法,用以解决现有技术存在的上述问题。
根据本发明的一个方面,提供了一种基于AI和儿童教育的promise控制异步函数序列的编程方法,在服务器的控制器中部署promise序列以控制进程;
在控制器中部署promise序列以控制多个进程的执行顺序;
所述promise序列包括start组件、then组件、next组件、resolve组件、reject组件及cancel组件;
所述start组件用于开始执行一个进程队列,所述进程队列是指多个等待被顺序执行的进程;
所述then组件用于保证每个进程按预先设置的顺序执行,且在每个进程执行之前校验该进程是否注册;
所述next组件用于在每个进程执行完成时发送给所述promise序列该进程已执行完的信号;
所述resolve组件用于在每个进程执行完成后直接返回控制器;
所述reject组件用于在promise序列控制多个进程的执行过程中获取取消执行的指令时则立即取消未执行的进程;
所述cancel组件用于取消进程队列。
进一步的,所述promise序列还包括registry组件,所述registry组件用于对每个需要执行的进程进行注册。
进一步的,还包括,所述每个需要执行的进程在注册之前被编入至少一个进程数组中。
与现有技术相比,本发明的有益效果是:本发明采用上述方案后,在多进程需要执行的情况下,服务器中处理器中的promise能够保证每个进程按顺序执行,从而提升了单个进程执行的效率,也提高了服务器的管理效率。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例中的一种基于AI和儿童教育的promise控制异步函数序列的编程方法的流程图之一;
图2为本发明实施例中的一种基于AI和儿童教育的promise控制异步函数序列的编程方法的流程图之二;
图3为本发明实施例中的一种基于AI和儿童教育的promise控制异步函数序列的编程方法的功能模块示意图;
图4为本发明实施例中的一种基于AI和儿童教育的promise控制异步函数序列的编程方法的任务场景示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分例,实施而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
实施例
如图1和图2所示,提供了本发明实施例的一种基于AI和儿童教育的promise控制异步函数序列的编程方法,在服务器的控制器中部署promise序列以控制进程;
在控制器中部署promise序列以控制多个进程的执行顺序;
promise序列包括registry组件、start组件、then组件、next组件、resolve组件、reject组件及cancel组件;
registry组件,简称registry,也指一种函数,用于对每个需要执行的进程进行注册;
start组件,简称start,也指一种函数,用于开始执行一个进程队列,进程队列是指多个等待被顺序执行的进程;
then组件,简称then,也指一种函数,用于保证每个进程按预先设置的顺序执行,且在每个进程执行之前校验该进程是否注册;
next组件,简称next,也指一种函数,用于在每个进程执行完成时发送给promise序列该进程已执行完的信号;
resolve组件,简称resolve,也指一种函数,用于在每个进程执行完成后直接返回控制器;
reject组件,简称reject,也指一种函数,用于在promise序列控制多个进程的执行过程中获取取消执行的指令时则立即取消未执行的进程;
cancel组件,简称cancel,也指一种函数,用于取消进程队列。
每个需要执行的进程在注册之前,所有的进程都被编入进至少一个进程数组中。
Promise序列简称Promise,Promise是一种处理异步流的技术,现主要应用在nwjs或者nodejs环境下以实现顺序执行进程以及取消进程序列的功能;控制进程是指多个进程在排队等待执行的过程中,一旦获得取消执行的指令时则取消执行。
Promise是一个代理对象(代理一个值),被代理的值在Promise创建时可能是未知的。它允许你为异步操作的成功和失败分别绑定相应的处理方法(handlers)。这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的promise。
一个Promise有以下几种状态:
Pending:初始状态,既不是成功,也不是失败状态。
fulfilled:意味着操作成功完成。
rejected:意味着操作失败。
pending状态的Promise对象可能触发fulfilled状态并传递一个值给相应的状态处理方法,也可能触发失败状态(rejected)并传递失败信息。
具体如下所述:
用户操作进程序列主要有两种情况。一种是用户点击开始,进程序列(多个进程)按顺序执行,中途用户执行取消;另一种是用户点击开始,进程序列按顺序执行,直到执行完毕。
一、用户点击开始
控制器初始化,它使用一个promise作为核心控制序列。所有需要按顺序执行的进程会预先放入进程数组中,控制器读取这个数组来对每个进程进行注册。
进程注册
原理:进程类利用了进程本身的close事件监听以及promise的resolve和reject方法,在处理完成时会使用resolve返回,而在控制器取消时会使用reject取消进程本身,其中close事件、resolve和reject方法都是编程语言中的一种通俗表达形式,下文中的next、start、cancel及registry同样都是编程语言中的一种通俗表达形式。
过程:进程类需要提供next函数来返回一个promise作为自己已经完成的信号,这个的promise将会被添加到控制器的promise队列里面,同时它还会提供promise返回的reject方法给控制器,以便于控制器进行取消操作。
运行
原理:运行利用了promise的慢执行特性,即在使用then注册回调时不会立即加载,这保证了在所有进程注册完毕之前,控制器不会真正开始运行。
过程:控制器利用内部promise维护了进程顺序执行的一条栈,每当一个进程执行完毕,控制器就会更新reject函数为下一个执行进程的reject函数。
执行完毕
原理:利用promise的then函数使得进程能够按照顺序执行而不是并发执行。
过程:控制器内部的promise自动找到下一个进程并开始运行。
二、用户点击取消
取消
控制器使用reject函数告诉当前执行的进程取消操作,同时抛出一个错误给内部的promise,内部promise接收到了这个错误之后将会中断promise序列,不再执行下一个进程。
三、进程执行完成
若此时已经没有下一个进程了,则执行完毕并且通知用户。
如图3所示,为本发明实施例中的一种基于AI和儿童教育的promise控制异步函数序列的编程方法的功能模块示意图,其中控制器包含如下5种函数及实现方法:
1.一个promise序列,用于保存registry方法注册next回调。
实现代码:
private queue=Promise.resolve();
2.reject方法用于实时获得进程取消的钩子。
实现代码:
private reject;
3.registry方法用于注册进程的next方法以及开始执行队列。
实现代码:
3.start用于注册取消钩子。
实现代码:
4.cancel用于取消进程队列。
实现代码:
function cancel(){
this.reject(new AbortError());
}
进程:
1.next用于编写业务逻辑以及返回取消钩子。
实现代码:
本发明采用上述方案后,在多进程需要执行的情况下,服务器中处理器中的promise能够保证每个进程按顺序执行,从而提升了单个进程执行的效率,也提高了服务器的管理效率。
如图4所示,为本发明实施例中的一种基于AI和儿童教育的promise控制异步函数序列的编程方法的任务场景示意图:
在nwjs环境下实现一个将代码转化成exe的工具,任务一对应生成nwjs配置环境,任务二对应于生成exe,任务三对应于生成exe图标,但不局限于此,可以推广只需要顺序执行进程的情况。
用户可以通过点击开始来启动任务序列,并在任务执行的过程中取消。如图,如果在任务二执行的过程中取消则会导致任务二结束以及中断序列,反之若没有取消则会执行完成。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (3)
1.一种基于AI和儿童教育的promise控制异步函数序列的编程方法,其特征在于,在服务器的控制器中部署promise序列以控制进程;
在控制器中部署promise序列以控制多个进程的执行顺序;
所述promise序列包括start组件、then组件、next组件、resolve组件、reject组件及cancel组件;
所述start组件用于开始执行一个进程队列,所述进程队列是指多个等待被顺序执行的进程;
所述then组件用于保证每个进程按预先设置的顺序执行,且在每个进程执行之前校验该进程是否注册;
所述next组件用于在每个进程执行完成时发送给所述promise序列该进程已执行完的信号;
所述resolve组件用于在每个进程执行完成后直接返回控制器;
所述reject组件用于在promise序列控制多个进程的执行过程中获取取消执行的指令时则立即取消未执行的进程;
所述cancel组件用于取消进程队列。
2.根据权利要求1所述的方法,其特征在于,所述promise序列还包括registry组件,所述registry组件用于对每个需要执行的进程进行注册。
3.根据权利要求2所述的方法,其特征在于,还包括,每个需要执行的进程在注册之前被编入至少一个进程数组中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810641264.3A CN108874523A (zh) | 2018-06-21 | 2018-06-21 | 一种基于AI和儿童教育的promise控制异步函数序列的编程方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810641264.3A CN108874523A (zh) | 2018-06-21 | 2018-06-21 | 一种基于AI和儿童教育的promise控制异步函数序列的编程方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108874523A true CN108874523A (zh) | 2018-11-23 |
Family
ID=64340719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810641264.3A Pending CN108874523A (zh) | 2018-06-21 | 2018-06-21 | 一种基于AI和儿童教育的promise控制异步函数序列的编程方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874523A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381920A (zh) * | 2020-02-17 | 2020-07-07 | 网易(杭州)网络有限公司 | 弹窗组件的显示方法、装置以及电子终端 |
CN111399815A (zh) * | 2020-03-09 | 2020-07-10 | 北京计算机技术及应用研究所 | 一种适用于网络靶场构建的异步函数流程控制方法 |
CN113568686A (zh) * | 2020-10-30 | 2021-10-29 | 深圳市九九互动科技有限公司 | Lua语言的异步处理方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120137108A1 (en) * | 2008-02-19 | 2012-05-31 | Koch Iii Kenneth Elmon | Systems and methods integrating boolean processing and memory |
CN102841803A (zh) * | 2011-06-24 | 2012-12-26 | 中兴通讯股份有限公司 | 一种异步调用java线程中本地代码的方法及装置 |
CN104731560A (zh) * | 2013-12-20 | 2015-06-24 | 三星电子株式会社 | 支持多线程处理的功能单元、处理器及其操作方法 |
WO2015160769A1 (en) * | 2012-10-12 | 2015-10-22 | Nienaber Ii David K | Post conversion mixing |
-
2018
- 2018-06-21 CN CN201810641264.3A patent/CN108874523A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120137108A1 (en) * | 2008-02-19 | 2012-05-31 | Koch Iii Kenneth Elmon | Systems and methods integrating boolean processing and memory |
CN102841803A (zh) * | 2011-06-24 | 2012-12-26 | 中兴通讯股份有限公司 | 一种异步调用java线程中本地代码的方法及装置 |
WO2015160769A1 (en) * | 2012-10-12 | 2015-10-22 | Nienaber Ii David K | Post conversion mixing |
CN104731560A (zh) * | 2013-12-20 | 2015-06-24 | 三星电子株式会社 | 支持多线程处理的功能单元、处理器及其操作方法 |
Non-Patent Citations (4)
Title |
---|
BARBARA LISKOV 等: "Promises: linguistic support for efficient asynchronous procedure calls in distributed systems", 《ACM SIGPLAN NOTICES》 * |
苍微Q: "理解JavaScript Promise", 《知乎-HTTPS://ZHUANLAN.ZHIHU.COM/P/26523836?UTM_SOURCE=WECHAT_SESSION&UTM_MEDIUM=SOCIAL&UTM_OI=58812505522176》 * |
袁翰林: "车辆征信信息系统的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
邓森泉 等: "Promise方式实现Node.js应用的实践", 《计算机系统应用》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381920A (zh) * | 2020-02-17 | 2020-07-07 | 网易(杭州)网络有限公司 | 弹窗组件的显示方法、装置以及电子终端 |
CN111399815A (zh) * | 2020-03-09 | 2020-07-10 | 北京计算机技术及应用研究所 | 一种适用于网络靶场构建的异步函数流程控制方法 |
CN111399815B (zh) * | 2020-03-09 | 2023-06-30 | 北京计算机技术及应用研究所 | 一种适用于网络靶场构建的异步函数流程控制方法 |
CN113568686A (zh) * | 2020-10-30 | 2021-10-29 | 深圳市九九互动科技有限公司 | Lua语言的异步处理方法、装置、计算机设备和存储介质 |
CN113568686B (zh) * | 2020-10-30 | 2023-11-28 | 深圳市九九互动科技有限公司 | Lua语言的异步处理方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110018893B (zh) | 一种基于数据处理的任务调度方法及相关设备 | |
CN108156181B (zh) | 一种基于协程异步io的漏洞探测方法及其漏洞扫描系统 | |
CN108874523A (zh) | 一种基于AI和儿童教育的promise控制异步函数序列的编程方法 | |
CN106407021A (zh) | 一种基于队列的业务请求处理方法 | |
CN110716793B (zh) | 一种分布式事务的执行方法、装置、设备及存储介质 | |
JPH0535903B2 (zh) | ||
US7661113B2 (en) | Method and system for data preparation and communication between software applications | |
CN115480904B (zh) | 微内核中系统服务并发调用方法 | |
CN110532106A (zh) | 进程间的通讯方法、装置、设备和存储介质 | |
CN105843697B (zh) | 一种浏览器控件的中断恢复方法及系统 | |
CN110609755A (zh) | 跨区块链节点的消息处理方法及装置、设备、介质 | |
CN108415757A (zh) | 分布式事务处理方法及装置 | |
CN109445954A (zh) | 一种定时任务的执行方法、终端设备及存储介质 | |
US20140114640A1 (en) | Method and system for simulating multiple processors in parallel and scheduler | |
CN104391754A (zh) | 一种任务异常的处理方法及装置 | |
CN100535864C (zh) | 一种系统进程调度下无效超时消息的方法及消息发送方法 | |
CN110347735A (zh) | 配置化的数据转发异常补处理方法、装置及可读存储介质 | |
CN111985634B (zh) | 神经网络的运算方法、装置、计算机设备及存储介质 | |
CN108509264A (zh) | 超时任务调度系统及方法 | |
Sridhar et al. | Dynamic module replacement in distributed protocols | |
CN101349975B (zh) | 一种在嵌入式操作系统上实现中断底半部机制的方法及装置 | |
CN109783215A (zh) | 异常任务处理方法及相关装置 | |
CN109542616A (zh) | 一种教育系统的多节点间数据计算的调度方法及电子设备 | |
CN114064232A (zh) | 基于面向对象的全自动设备异步并发调度控制系统及方法 | |
CN114153573A (zh) | 一种基于单线程池的多任务处理的方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181123 |
|
RJ01 | Rejection of invention patent application after publication |