azure nodejs sdk 的 wait() 函数

wait() function for azure nodejs sdk

是否有 wait() 函数可用于 azure nodejs SDK,就像 python SDK 所具有的一样。 下面是我的 python 代码,用于在 azure

中启动虚拟机
async_vm_start = compute_client.virtual_machines.start(group_name, vm_name)
async_vm_start.wait()

所以我的整个程序在这里等待,直到 VM 完全启动并继续。 下面是我启动虚拟机的 nodejs 代码

clientCompute.virtualMachines.start(resourceGroupName, vmName, function(err, result) {
    if (err) console.log(err);
    else console.log(result);
})

这里我的程序不等待,只是继续进行,即使在幕后 VM 仍在启动过程中。

我试过 setTimeout 但它不可靠。那么我的nodejs函数有什么办法可以等到虚拟机完全启动。

提前致谢

start() 函数的第三个参数是一个回调函数,它将在 VM 启动后调用。如果您有以下代码:

console.log('I will be logged first!')
clientCompute.virtualMachines.start(resourceGroupName, vmName, function(err, result) {
    console.log('I will be logged after the VM has started!')
})
console.log('I will be logged almost immediately after the first!')

您会看到他们 运行 的顺序。如果在 VM 启动后 有任何事情需要发生,请在该回调中执行。

当然,如果您有很多事情要按顺序完成,并且在回调中有一个回调,那么这可能会很痛苦……它只会变得混乱。我不确定您使用的是哪个版本的 SDK,但您可以使用更新的版本 async/await:

console.log('I will be logged first!')
await clientCompute.virtualMachines.start(resourceGroupName, vmName)
console.log('I will be logged after the VM has started!')

或使用 promisify 将基于回调的函数转换为可以等待的承诺。