尝试在while循环中执行代码并设置标志,但是无法设置标志,它带有初始标志值。我的代码如下:
<style name="TextLabelArbitrage">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:fontFamily">@font/medium</item>
<item name="android:gravity">center</item>
<item name="android:textSize">10sp</item>
<item name="android:paddingTop">@dimen/margin_atomic</item>
</style>
<style name="TextContentArbitrage">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:fontFamily">@font/medium</item>
<item name="android:gravity">center</item>
<item name="android:maxLines">2</item>
<item name="android:ellipsize">end</item>
<item name="android:textSize">16sp</item>
<item name="android:paddingBottom">@dimen/margin_atomic</item>
</style>
没有得到控件转到console.log的原因('flag value:'+ flag);而不是按顺序执行
答案 0 :(得分:0)
connection.query
是异步调用,所以
console.log('flag value : '+flag);
立即执行,并且在数据库完成之前不会执行回调(可能需要一段时间)。
如果要在查询完成后执行它,请将其与myCallback
一起使用研究术语异步
编辑:
看起来您正在尝试重复调用查询。我不确定你到底想做什么,但我认为你所寻找的是:
var secondQuery = function(results) {
connection.query('SELECT tbl_buy.* from (select tbl_buy.*, (@sum := @sum + nlc) as cume_stock from tbl_buy cross join (select @sum := 0) params WHERE tbl_buy.type="sell" AND tbl_buy.status="available" AND tbl_buy.user_id!="'+results[0].user_id+'" AND tbl_buy.coin_id="'+jsondata.coinid+'" AND tbl_buy.order_type="market" order by id ) tbl_buy where cume_stock-nlc < "'+results[0].nlc+'"',function (error,results_arr, fields) {
res.end(JSON.stringify(results_arr));
myCallback(results,results_arr);
});
}
var database_poll_timeout = 10; // you can try setting to 0 if you want
var firstQuery = function() {
connection.query('SELECT nlc,id,user_id FROM tbl_buy WHERE `type`="buy" AND `status`="available" AND coin_id="'+jsondata.coinid+'" AND order_type="market" order by id ASC LIMIT '+offset+',1', function(error,results, fields) {
if(results.length > 0) {
secondQuery(results);
} else {
// this is your while loop - wait for the database to return before retrying
setTimeout(firstQuery, database_poll_timeout);
}
});
}
firstQuery();
答案 1 :(得分:0)
因为节点是异步的。这就是为什么当您的查询阻止处理时,它会将您的代码推送到event-loop
并执行下一个语句console.log('flag value : '+flag);