Node js:应该使用alert来调用该函数
node js : should be use alert to invoke the function?
我不知道我的代码发生了什么…我有一个Node.js查询MySQL数据库内的路由,并显示结果给用户。我的问题是我如何运行查询和阻塞,直到查询完成之前重定向用户到他们所请求的页面?如果我在调用前添加警报,函数会正常运行并快速响应,但如果禁用警报,函数就不能返回任何值,函数就会冻结。
function fred(){ //request function from here to fblue
alert('fred called'); //if i disable alert,the function not return any value
get('id', function(datmovMar) {
var obj = JSON.parse(datmovMar);
var items = Object.keys(obj);
var output='';
items.forEach(function(item) {
output+=obj[item].something+'<br/>';
alert(output);
});
});
}
function get(id, callback) {
$.ajax('http://localhost:8000/' + id + '/', {
type: 'GET',
dataType: 'json',
success: function(data) { if ( callback ) callback(data); },
error : function() { if ( callback ) callback(null); }
});
}
,这段代码位于节点js
fblue(function(datmovMar){ //call function from here
res.write(JSON.stringify(datmovMar));
res.end(''n');
});
function fblue(callback){
var query = connection.query('SELECT something from table'),
pinMarker = [];
query
.on('error', function(err) {
console.log( err );
updateSockets( err );
})
.on('result', function( user ) {
pinMarker.push( user );
})
.on('end',function(){
if(connectionsArray.length) {
jsonStringx = JSON.stringify( pinMarker );
callback(jsonStringx);
}
});
}
我不知道为什么如果警报禁用功能不能正常运行?
请帮…
谢谢
你正在调用jQuery的$.ajax
方法,它将创建一个异步的javascript请求到你的服务器。
这意味着控制流将在您启动对服务器的调用之后继续。
所以你不应该期望fred()
函数阻塞,直到你的请求已经被服务,相反,你需要以异步方式重写你的浏览器端javascript代码
jQuery的$。Ajax函数默认异步运行。这意味着请求在运行时不会被阻塞,因此后续的代码行将立即执行。对于异步调用,执行顺序不能保证。
你可以在这里"作弊"一下,并指定async选项如下:
$.ajax('http://localhost:8000/' + id + '/', {
type: 'GET',
dataType: 'json',
async: false,
success: function(data) { if ( callback ) callback(data); },
error : function() { if ( callback ) callback(null); }
});
将强制使用$。ajax调用不返回,直到它完成。然而,这并不是JavaScript真正的做事方式,因为您失去了异步执行所带来的效率。正如另一位KARASZI指出的那样,您应该异步地编写此代码。
相关文章:
- 当调用JS函数具有alert()时,应用程序将被冻结
- 为什么在调用 window.open() 后需要编写 alert()
- C# WebView 不理解 JavaScript 调用 alert()(Windows 8 XAML 应用程序)
- JQuery css() 效果逆转,除非我事先调用 alert('时间浪费')
- 覆盖函数(例如“alert”)并调用原始函数
- 调用 alert() 是否会清除浏览器缓存
- 在php-if上调用一个修改过的alert函数
- 调用javascript函数的flash应用程序在调用javascript alert()时停止挂起处理
- 除非调用alert(),否则不会设置异步回调中设置的值
- 如何在$.post()回调显示alert()之前调用函数
- Alert不会在onSubmit方法中被调用
- 如何使用jQuery调用Bootstrap alert
- 在Node.js脚本中调用alert()函数会冻结整个服务器吗?
- Node js:应该使用alert来调用该函数
- 只有在重定向行之后调用alert()时,greasemmonkey发出的重定向才有效
- 如何调用Lightbox而不是JS "alert"
- 如何用jquery对话框替换javascript alert(在事件调用的地方弹出)
- 在bootbox中调用alert
- 为什么这个alert()调用可以工作?
- Jquery if条件,如果字符串格式不正确,将调用Alert