開滿天機(jī)
2019-03-14 14:15:24
如題,我們有一個(gè)如下的業(yè)務(wù)需求var x=[];function A(){處理X}function B(){也處理X}我現(xiàn)在擔(dān)心,因?yàn)閒unction A和B都在處理X,如果運(yùn)行時(shí)出現(xiàn)交叉,就會(huì)導(dǎo)致一些代碼邏輯問題。在數(shù)據(jù)庫(kù)中,一般是通過鎖表的形式,防止X被兩個(gè)操作同時(shí)修改。但是在JS中,不知道有什么方法可以避免這種情況?或者說,JS的代碼運(yùn)行方式,根本就不會(huì)出現(xiàn)這種情況,肯定是完整的代碼塊運(yùn)行完,才會(huì)運(yùn)行下一個(gè)代碼塊?多謝
2 回答

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
沒有同時(shí)這概念,代碼都會(huì)被執(zhí)行,但不一定有結(jié)果(感覺你問的是這個(gè))。比如function里面有異步方法的話,會(huì)出現(xiàn)看似A執(zhí)行到某一部分執(zhí)行B然后又執(zhí)行A。
var x = [];
function A() {
setTimeout(() => {
x[0] = 'A'
setTimeout(() => { console.log('A', x) }, 0)
}, 0)
}
function B() {
setTimeout(() => {
x[0] = 'B'
}, 0)
}
A();
B();
解決方式就是異步流程控制的問題,搜一下一大堆。
添加回答
舉報(bào)
0/150
提交
取消