如何动态加载一个JS文件后,能马上运行其中的函数?

如何动态加载一个JS文件后,能马上运行其中的函数?,第1张

js中是有立即执行函数的,比如说js文件中有一个函数为:

function

sayHello(){

consolelog('Hello

World!');

}

如果你想在js文件加载后,立即执行sayHello()函数,那么可以在js中加入

sayHello();的调用即可。

在Android中到处可见接口回调机制,尤其是UI事件处理方面,本文给大家介绍android接口回调机制,涉及到android接口回调相关知识,对本文感兴趣的朋友可以参考下本篇文章

在使用接口回调的时候发现了一个经常犯的错误,就是回调函数里面的实现有可能是用多线程或者是异步任务去做的,这就会导致我们期望函数回调完毕去返回一个主函数的结果,实际发现是行不通的,因为如果回调是多线程的话你是无法和主函数同步的,也就是返回的数据是错误的,这是非常隐秘的一个错误。那有什么好的方法去实现数据的线性传递呢?先介绍下回调机制原理。

回调函数

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

开发中,接口回调是我们经常用到的。

接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行。

举个例子:

A有一个问题不会,他去问B,B暂时解决不出来,B说,等我(B)解决了再告诉你(A)此时A可以继续先做别的事情。

那么就只有当B解决完问题后告诉A问题解决了,A才可以能解决这个问题。

代码中比如最常用的:

一个Activity中给按钮一个接口回调方法,只有用户点击了这个按钮,告诉按钮被点击了,才会执行按钮接口回调的方法

1、新建一个html文件,命名为testhtml。

2、在testhtml文件中,使用script标签加载jqueryminjs文件,成功加载该文件,才能使用jquery方法。

3、在js标签内,在页面加载完成时,获取body对象,使用append()方法向body动态添加一个div元素。

4、在testhtml文件中,使用button标签创建一个按钮,按钮名称为“获取id值”。

5、在testhtml文件中,给button按钮绑定onclick点击事件,当按钮被点击时,执行getid()函数。

6、在js标签内,创建getid()函数,在函数内,通过元素名称获得div对象,使用attr()方法获得动态添加div的id值,并使用alert()方法将值输出。

7、在浏览器打开testhtml文件,点击按钮,查看结果。

$get("/admin/inc/admin_set_article_totopasp");

这样一个ajax请求,没有回调函数,忽略了返回值,可能浏览器检测不到

关键是这个get请求后台执行了没有

定义一个纯抽象基类,就是除了纯虚函数没有别的东西的类。写在一份H文件里。在DLL里,从在抽象基类派生子类,重载并实现基类里所有函数。并且用DEF输出一个函数,类似于:

class CMyClassInDll : public IMyClassInDll

{

};

LPVOID PASCAL CreateObject()

{

return (LPVOID) new CMyClassInDll;

}

然后在要调用该DLL的模块里也include那个抽象基类的头文件,然后定义一个该抽象基类的指针:

IMyClassInDll pObj;

加载DLL,获得从DEF里输出那个函数CreateObject(),怎么获得不说了,是一般方法了。

然后: pObj = (IMyClassInDll )CreateObj();

OK啦,现在你可以通过 pObj->来使用CMyClassInDll类啦!最后要注意的是,好像用完后,

delete pObj会出错?我不清楚。反正你在IMyClassInDll里声明一个类似Release的函数,在该函数里delete this就成了!

这实际就是COM(至少是进程内组件)的C++实现的理论基础。是一个最简化版本的COM组件。

我先说下你想要的结果,你把AssemblyLoadFrom换成AssemblyLoadFile即可。

另外,你既然能够在你的应用中使用AssemblyLoadFrom这样的方法,那test1dll他们的路径就是已知的了,何必还要通过反射程序集内部方法来获取它的Location呢?

如果你是将test1dll注册到了全局环境中,那么我建议你不要使用LoadFrom和LoadFile,改用Load方法:将test1和test2通过版本号或者公钥(PublicKey)加以区别,然后用Load方法调用。调用参数类似于:“程序集名,Version=版本1,culture=区域信息1,PublicKeyToken=公钥1”,这是微软标准的做法。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12163263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存