如何将回调代码转换为Promise格式?

时间:2019-10-08 03:35:00

标签: javascript node.js promise async-await angular-promise

我可以手动成功地通过端口Host Port: 0/TCP远程登录到Name: server-deployment-6b78885779-zttns Namespace: default Priority: 0 PriorityClassName: <none> Node: minikube/10.0.2.15 Start Time: Tue, 08 Oct 2019 19:54:03 -0700 Labels: app.kubernetes.io/managed-by=skaffold-v0.39.0 component=server pod-template-hash=6b78885779 skaffold.dev/builder=local skaffold.dev/cleanup=true skaffold.dev/deployer=kubectl skaffold.dev/docker-api-version=1.39 skaffold.dev/run-id=c545df44-a37d-4746-822d-392f42817108 skaffold.dev/tag-policy=git-commit skaffold.dev/tail=true Annotations: <none> Status: Running IP: 172.17.0.5 Controlled By: ReplicaSet/server-deployment-6b78885779 Containers: server: Container ID: docker://2d0aba8f5f9c51a81f01acc767e863b7321658f0a3d0839745adb99eb0e3907a Image: sockpuppet/server:668dfe550d93a0ae76eb07e0bab900f3968a7776f4f177c97f61b18a8b1677a7 Image ID: docker://sha256:668dfe550d93a0ae76eb07e0bab900f3968a7776f4f177c97f61b18a8b1677a7 Port: 5000/TCP Host Port: 0/TCP State: Running Started: Tue, 08 Oct 2019 19:54:05 -0700 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-qz5kr (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: default-token-qz5kr: Type: Secret (a volume populated by a Secret) SecretName: default-token-qz5kr Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled <unknown> default-scheduler Successfully assigned default/server-deployment-6b78885779-zttns to minikube Normal Pulled 7s kubelet, minikube Container image "sockpuppet/server:668dfe550d93a0ae76eb07e0bab900f3968a7776f4f177c97f61b18a8b1677a7" already present on machine Normal Created 7s kubelet, minikube Created container server Normal Started 6s kubelet, minikube Started container server 。 这意味着以下代码应将输出显示为linux345

但是,代码输出返回2345。 看来将0转换为1格式将有助于解决此问题。 请提出更新后的代码的样子。

callback

1 个答案:

答案 0 :(得分:0)

let ErrCode = 1;

const client = new net.Socket();

const connect = util.promisify(client.connect);

async function testFun() {
    try {
        let data = await connect(PORT, HOST);
        ErrCode = 0;
        console.log('Client received: ' + data);
        if (data.toString().endsWith('exit')) {
            client.destroy();
        }
    }
    catch (ex) {
        ErrCode = -1;
    }
}

testFun().then(() => {
    console.log(ErrCode)
}
)

使用util.promisify

  

采用遵循常见错误优先回调样式的函数,即   以(err,value)=> ...回调作为最后一个参数,并且   返回一个返回承诺的版本。