Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建javascript对象_Javascript_Loops - Fatal编程技术网

创建javascript对象

创建javascript对象,javascript,loops,Javascript,Loops,设置: 你好我正在尝试学习如何创建/实例化对象。我在想,我应该能够创建多个对象,这些对象可能有不同数量的类似作品(如收集新闻文章),并且无论创建的顺序如何,都会“报告完成情况”。到目前为止,我还不清楚这一点,因此下面是一个基本示例,后面是一个问题: function test(count){ this.count = count; for(var i = 0; i< count; i++){} console.log(i); } new test(1000); n

设置: 你好我正在尝试学习如何创建/实例化对象。我在想,我应该能够创建多个对象,这些对象可能有不同数量的类似作品(如收集新闻文章),并且无论创建的顺序如何,都会“报告完成情况”。到目前为止,我还不清楚这一点,因此下面是一个基本示例,后面是一个问题:

function test(count){
    this.count = count;
    for(var i = 0; i< count; i++){}
    console.log(i);
}

new test(1000);
new test(10);
功能测试(计数){
this.count=计数;
对于(var i=0;i
实际问题:

基于上面的代码,我希望第二个实例首先打印,但它没有。正确的设置方法是什么,以便哪一个对象先完成其工作并打印

*修改我的问题*
抱歉…我真正想问的是如何设置对象使其具有更多的异步行为。我是堆栈新手,所以请告诉我是否应该关闭/移动此问题。

您没有创建不同的并行执行线程:第一个
测试(1000)
在下一行开始之前完全执行

在Javascript中,当您不使用webworkers(您可能不应该使用webworkers)时,所有代码总是在单个线程中执行。此线程在事件中被浏览器唤醒,当浏览器调用的函数返回时返回睡眠状态


请注意,即使使用线程,即使是在自然并行语言中,也很难保证循环首先结束。

您没有创建不同的并行执行线程:第一个
测试(1000)
在下一行开始之前完全执行

在Javascript中,当您不使用webworkers(您可能不应该使用webworkers)时,所有代码总是在单个线程中执行。此线程在事件中被浏览器唤醒,当浏览器调用的函数返回时返回睡眠状态


请注意,即使使用线程,甚至在自然并行语言中,您也很难保证循环首先结束。

一般来说,JavaScript使用同步执行模型,即事件队列。所有调用都放在这里,基本上是按照它们在源代码中出现的顺序(考虑它们所在的范围)

因此,如果启动某个函数,则在该函数完成之前,不会执行其他任何操作。在本例中,您将两个调用都放在事件队列上,但只有在第一个调用完成后,才会执行第二个调用

但也有例外:或

在这里,执行在通常的事件队列之外,您可以在执行完成后使用消息处理程序或回调来使用结果。但是,在大多数情况下,您无法确定调用的完成顺序,因为有许多情况会影响执行顺序(网络延迟、cpu使用等)


在您的情况下,似乎无论如何都要加载外部资源。现在来看看AJAX是如何工作的。

一般来说,JavaScript使用一个同步执行模型,即事件队列。所有调用都放在这里,基本上是按照它们在源代码中出现的顺序(考虑它们所在的范围)

因此,如果启动某个函数,则在该函数完成之前,不会执行其他任何操作。在本例中,您将两个调用都放在事件队列上,但只有在第一个调用完成后,才会执行第二个调用

但也有例外:或

在这里,执行在通常的事件队列之外,您可以在执行完成后使用消息处理程序或回调来使用结果。但是,在大多数情况下,您无法确定调用的完成顺序,因为有许多情况会影响执行顺序(网络延迟、cpu使用等)


在您的情况下,似乎无论如何都要加载外部资源。看看AJAX是如何工作的。

第二个实例没有首先打印的原因是第一个调用
newtest(1000)
在下一行
newtest(10)
开始执行之前运行到完成

如果您想让第二个呼叫先运行,请交换两条线路

编辑: 顺便说一下,任何体面的编译器都会完全删除这一行:

for(var i = 0; i< count; i++){}
for(var i=0;i

因此,您甚至不能期望第一个调用比第二个调用花费更多的时间…

第二个实例不首先打印的原因是第一个调用
新测试(1000)
在下一行
新测试(10)
开始执行之前运行到完成

如果您想让第二个呼叫先运行,请交换两条线路

编辑: 顺便说一下,任何体面的编译器都会完全删除这一行:

for(var i = 0; i< count; i++){}
for(var i=0;i

因此,您甚至不能期望第一个调用比第二个调用花费更多的时间…

第二个实例仅在第一个对象实例化之后才会实例化。
因此,在新测试(10)


因为它是单线程程序,所以第二个实例只有在第一个对象被实例化之后才会被实例化。
因此,在新测试(10)

因为它是单线程程序