单个异步处理:
let usedMemoryPromise = fetchUsedMemeory(); usedMemoryPromise.then(data => {...}) function fetchUsedMemeory(){ return new Promise( function(resolve){ let clusterId = $("#cluster-id").val(); invokeJsonRpc(RDS_CONFIG.APOLLO_CMDB_ENDPOINT_V3, "query.aggregate", { graph: `graph g { redisCluster: RedisCluster[ id = "${clusterId}" ];}`, fields: [["redisCluster.name", "redisCluster.id", "redisCluster.used_memory"]] }).then(resp => { let usedMemory = resp.result.children[0].data["redisCluster.used_memory"]; resolve(usedMemory); }) }); }
多个异步同时处理:
async function findXdcrRelation(state, bucketId) { const xdcrSourcePromise = invokeJsonRpc(RDS_CONFIG.APOLLO_CMDB_ENDPOINT_V3, "query.resource", { graph: `g { x: CouchbaseXDCR; s: CouchbaseBucket [id=${bucketId}]; x ~> @source_bucket ~> s;}`, target: 0 }); const xdcrTargetPromise = invokeJsonRpc(RDS_CONFIG.APOLLO_CMDB_ENDPOINT_V3, "query.resource", { graph: `g { x: CouchbaseXDCR; s: CouchbaseBucket [id=${bucketId}]; x ~> @target_bucket ~> s;}`, target: 0 }); let [xdcrSourceData, xdcrTargetData] = await Promise.all([xdcrSourcePromise, xdcrTargetPromise]); const hasError = (xdcrSourceData.hasOwnProperty("error") && xdcrTargetData.hasOwnProperty("error")); if (!hasError && (xdcrSourceData.result.length > 0 || xdcrTargetData.result.length > 0)) { state.hasXdcrRelation = true; } }