UNPKG

interpret-dubbo2js

Version:

apache dubbo & dubbo-js interpret java-jar file to typescript files

58 lines (57 loc) 2 kB
"use strict"; /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); /** * 统一promise的错误处理机制 * 在使用async/await的过程中,对于错误的处理,通常第一选择是try/catch, * 但是常常会出现nested try/catch,代码就不会那么优雅 * 针对异常或者异常的处理有很多方式,命令式的try/catch, 函数式的Optional, Either * 还比如go的多返回值, * f, err := os.Open("filename.ext") * if err != nil { * log.Fatal(err) * } * 虽然verbose但是足够简单,规则统一 * * 所以在这里对promise的错误处理进行值的统一包装,以此来简化 * * Usage: * function test() { * return new Promise((resolve, reject) => { * setTimeout(() => { * resolve('hello'); * //reject(new Error('error')) * }, 200) * }) * } * * (async () => { * const {res, err} = await to(test()); * console.log(res) ;// hello * console.log(err); //Error('error') * })(); * * @param promise */ function to(promise) { return promise.then((res = null) => ({ res, err: null })).catch(err => ({ res: null, err, })); } exports.to = to;