标签: synchronous

NodeJs,javascript:.forEach似乎是异步的?需要同步

我目前正在与3个朋友一起使用nodeJs,expressJs,MongoDB,html5进行一个项目......由于我们对这些技术还不熟悉,我们遇到了一些问题.我无法找到解决方案的一个大问题是某些代码的异步执行.

我想要为每个循环完成,以便我有一个更新的在线好友列表,然后执行res.render(我在其中传递在线好友列表),因为当前它在完成循环之前执行res.render .码:

function onlineFriends(req, res) {
var onlinefriends = new Array();
onlinefriends.push("mark");
FriendList.findOne({
    owner: req.session.username
}, function (err, friendlist) {
    friendlist.friends.forEach(function (friend) { // here forEach starts
        OnlineUser.findOne({
            userName: friend
        }, function (err, onlineFriend) {
            if (onlineFriend != null) {
                onlinefriends.push(onlineFriend.userName);
                console.log("a loop");
            }
        });

    });  
        console.log("online friends: " + onlinefriends);
        console.log("redirecting");
        res.render('index', { // this is still inside the forEach function
            friendlist: friendlist.friends,
            onlinefriendlist: onlinefriends,
            username: req.session.username
        });// and here it ends
});
Run Code Online (Sandbox Code Playgroud)

}

输出如下:

online friends: mark …
Run Code Online (Sandbox Code Playgroud)

javascript foreach asynchronous synchronous node.js

14
推荐指数
2
解决办法
2万
查看次数

如何使用骨干提取进行同步调用

我需要用同步调用调用fetch,我知道jquery ajax我可以使用我可以{async: false} 通过这个选项来获取函数吗?

ajax jquery synchronous backbone.js

14
推荐指数
2
解决办法
1万
查看次数

javascript中的map()是否同步?

功能是:

[1,2,3].map( function (item)
{
  console.log(item);
  //return 'something';
});
Run Code Online (Sandbox Code Playgroud)

我的预期行为只有1作为输出,除非我取消注释

//return 'something'
Run Code Online (Sandbox Code Playgroud)

但我真的明白了

1
2
3
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么 ?

更新:

我正在使用nodejs进行测试.

我真的不明白.

var async = require("async");

[1,2,3].map( function (item)
{
      console.log(item);
      //return 'something';
}); 
async.map([1,2,3], function (item,callback)
    {
        console.log(item);
        //callback(null,true)
    }, function (err,result)
        {
            console.log(result);
        }
);
Run Code Online (Sandbox Code Playgroud)

两者都返回相同

1
2
3
Run Code Online (Sandbox Code Playgroud)

而且我真的想等到我得到一个回复​​或回调,直到下一个项目被执行.

解决了

async.mapSeries([1,2,3], function (item,callback)
    {
        console.log(item);
        //callback(null,true)
    }, function (err,result)
        {
            console.log(result);
        }
);
Run Code Online (Sandbox Code Playgroud)

是这样做的方式.

javascript asynchronous map synchronous

14
推荐指数
1
解决办法
2万
查看次数

等待IO的线程是否也会阻塞核心?

在计算的同步/阻塞模型中,我们通常说执行线程在等待IO任务完成时将等待(被阻塞).

我的问题是,这通常会导致CPU核心执行线程空闲,还是等待IO的线程通常会被上下文切换出来并进入等待状态,直到IO准备好被处理?

multithreading asynchronous cpu-architecture synchronous blocking

14
推荐指数
1
解决办法
5261
查看次数

同步和异步活动

任何人都可以帮我理解Android中的同步异步活动吗?

Android中同步和异步活动的确切含义是什么?

StartActivity,StartSubActivityStartAcivityForResult同步或异步启动活动,或者它们可以以两种方式运行?

请解释,因为我已经阅读了很多文章,但未找到任何适当的解释.

android asynchronous synchronous android-activity

13
推荐指数
1
解决办法
2万
查看次数

jQuery Deferred和Promise用于顺序执行同步和异步函数

如果我想以特定的顺序执行同步和异步函数,我可以使用jQuery promise,但它看起来并不像我期望的那样工作.

函数a,b和c应该在deferred.resolve()调用时按顺序执行我希望函数b被执行但是无论是否调用了解析,所有函数都会立即执行.

这是代码:

function a(){
  var deferred = $.Deferred();
  setTimeout(function(){
    console.log("status in a:",deferred.state());
    //this should trigger calling a or not?
    deferred.resolve("from a");
  },200);
  console.log("a");
  return deferred.promise();
};
function b(){
  var deferred = $.Deferred();
  setTimeout(function(){
    console.log("status in b:",deferred.state());
    deferred.resolve("from b");
  },200);
  console.log("b");
  return deferred.promise();
}
//synchronous function
function c(){
  var deferred = $.Deferred();
  console.log("c");
  console.log("status in c:",deferred.state());
  deferred.resolve("from c");
  return deferred.promise();
}
function test(){
  fn=[a,b,c],i=-1,
  len = fn.length,d,
  d = jQuery.Deferred(),
  p=d.promise();
  while(++i<len){
    p=p.then(fn[i]);
  }
  p.then(function(){
    console.log("done");
  }, …
Run Code Online (Sandbox Code Playgroud)

javascript jquery asynchronous synchronous promise

13
推荐指数
1
解决办法
2万
查看次数

AJAX请求同步Vs异步

同步请求和异步请求之间的性能(速度方面)是否有任何差异?

使用异步请求的原因是什么?

ajax asynchronous request synchronous

12
推荐指数
1
解决办法
2万
查看次数

如果MessageBox()/ related是同步的,为什么我的消息循环不会冻结?

为什么如果我MessageBox()在我的消息循环中调用看似同步的Windows函数,循环本身不会像我调用Sleep()(或类似函数)那样冻结?为了说明我的观点,请采用以下骨架WndProc:

int counter = 0;

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
        case WM_CREATE:
             SetTimer(hwnd, 1, 1000, NULL); //start a 1 second timer
             break;
        case WM_PAINT:
             // paint/display counter variable onto window
             break;
        case WM_TIMER: //occurs every second
             counter++;
             InvalidateRect(hwnd, NULL, TRUE); //force window to repaint itself
             break; 
        case WM_LBUTTONDOWN: //someone clicks the window
             MessageBox(hwnd, "", "", 0);
             MessageBeep(MB_OK); //play a sound after MessageBox returns
             break;
        //default …
Run Code Online (Sandbox Code Playgroud)

c++ winapi multithreading synchronous blocking

12
推荐指数
1
解决办法
3867
查看次数

在(同步)Ajax期间停止浏览器锁定?

我想要做的是将一个加载图像附加到div(所以用户知道正在加载的东西)然后我调用一个jquery ajax函数,它被设置为"async:false".这是我的代码:

$jQuery("#playersListDiv").html(loadingImage);    
$jQuery.ajax({
         type: "POST", /* this goesn't work with GET */
         url: urlValue, /*ex: "NBAgetGamesList.php" */
         data: parameters, /*ex: "param1=hello" */
         cache: false,
         async: false,
                     success: function(data){

                     }
});
Run Code Online (Sandbox Code Playgroud)

问题是浏览器锁定并且不会附加加载图像,直到完成ajax调用之后,这当然没用.Firefox是唯一实际附加加载图像的浏览器.IE,Chrome和Safari不要附加加载图片.

我知道浏览器锁定发生是因为async设置为false但这是我唯一的选择,因为我必须等待此请求完成才能继续,因为我需要返回的数据.

有没有办法解决?如果我在添加有效的加载图像之后发出警报,但我不希望每次都弹出警报.

javascript ajax jquery synchronous

12
推荐指数
1
解决办法
2万
查看次数

同步v/s异步

我想了解龙卷风文档介绍页面上提供的基本示例.它有2个代码块.同步一个对我来说很好,我也理解它.但异步的是我无法理解的.

同步

from tornado.httpclient import HTTPClient

def synchronous_fetch(url):
    http_client = HTTPClient()
    response = http_client.fetch(url)
    return response.body
Run Code Online (Sandbox Code Playgroud)

异步

from tornado.httpclient import AsyncHTTPClient

def asynchronous_fetch(url, callback):
    http_client = AsyncHTTPClient()
    def handle_response(response):
        callback(response.body)
    http_client.fetch(url, callback=handle_response)
Run Code Online (Sandbox Code Playgroud)

如果您能提供更好的示例,请执行此操作.

python asynchronous callback tornado synchronous

12
推荐指数
1
解决办法
1万
查看次数