JS 中关于两个promise函数执行顺序的问题

`var bConnect = 0;`//全局变量

 myonLoad() {

return new Promise((resolve, reject) => {

try {

var s_pnp = new SoftKey3W();

s_pnp.Socket_UK.onopen = function () {

bConnect = 1; //代表已经连接,用于判断是否安装了客户端服务

console.log("我先执行1", bConnect);

};

//在使用事件插拨时,注意,一定不要关掉Sockey,否则无法监测事件插拨

s_pnp.Socket_UK.onmessage = function got_packet(Msg) {

var PnpData = JSON.parse(Msg.data);

if (PnpData.type == "PnpEvent") {

//如果是插拨事件处理消息

if (PnpData.IsIn) {

alert(

"UKEY已被插入,被插入的锁的路径是:" + PnpData.DevicePath

);

} else {

alert(

"UKEY已被拨出,被拨出的锁的路径是:" + PnpData.DevicePath

);

}

}

};

s_pnp.Socket_UK.onclose = function () {};

resolve(true);

} catch (e) {

alert(e.name + ": " + e.message);

return false;

}

});

},

 mylogin_onclick() {

//这里使用了异步的方式,因为WEBSOCKET是异步的

return new Promise((resolve, reject) => {

console.log("我先执行2", bConnect);

//判断是否安装了服务程序,如果没有安装提示用户安装

if (bConnect == 0) {

window.alert("未能连接服务程序,请确定服务程序是否安装。");

resolve(false);

}

try {

//一系列操作

s_simnew1.Socket_UK.onclose = function () {};

resolve(true);

} catch (e) {

alert(e.name + ": " + e.message + "。可能是没有安装相应的控件或插件");

resolve(false);

}

});

},

bConnect 是状态标识符 myonLoad要先执行用来改变标识符成为1的之后,mylogin_onclick继续执行 判断是1的时候 进行if下的主体模块方法
我在mouted生命周期里面是这么写的

`

 mounted() {

this.myonLoad().then((resolve) => {

if (resolve) {

this.mylogin_onclick();

}

});

},

`

控制台这样执行

怎么样能让 myonLoad 先执行完 修改完了标识符的值之后 mylogin方法再执行呢

回答

 myonLoad() {

return new Promise((resolve, reject) => {

try {

var s_pnp = new SoftKey3W();

s_pnp.Socket_UK.onopen = function () {

bConnect = 1; //代表已经连接,用于判断是否安装了客户端服务

console.log("我先执行1", bConnect);

};

//在使用事件插拨时,注意,一定不要关掉Sockey,否则无法监测事件插拨

s_pnp.Socket_UK.onmessage = function got_packet(Msg) {

var PnpData = JSON.parse(Msg.data);

if (PnpData.type == "PnpEvent") {

//如果是插拨事件处理消息

if (PnpData.IsIn) {

alert(

"UKEY已被插入,被插入的锁的路径是:" + PnpData.DevicePath

);

} else {

alert(

"UKEY已被拨出,被拨出的锁的路径是:" + PnpData.DevicePath

);

}

}

resolve(true)

};

s_pnp.Socket_UK.onclose = function () {};

// resolve(true);

} catch (e) {

alert(e.name + ": " + e.message);

reject(false)

return false;

}

});

},

以上是 JS 中关于两个promise函数执行顺序的问题 的全部内容, 来源链接: utcz.com/a/40160.html

回到顶部