版本一
1、将异步调用定义在 Promise 对象里面
let vector = new Promise(function(resolve, reject){
client.WordEmbedding(req, function (errMsg, response) {
if (errMsg) {
console.log(errMsg);
reject(errMsg)
}
resolve(response.to_json_string())
});
})
2、在云函数的 main 中 await 等待异步,数据存于变量
3、return 返回变量数据
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
await vector.then((v)=>data=v);
return data
}
版本二
因为 Promise 对象创建后会立即执行,为了等待 main 中的参数再执行,修改如下:
1、把 new Promise 放在函数中返回
function vector() {
let rtn = new Promise(function (resolve, reject) {
client.WordEmbedding(req, function (errMsg, response) {
if (errMsg) {
console.log(errMsg);
resolve(null)
}
resolve(response.to_json_string())
});
})
return rtn
}
2、调用函数得到 Promise 对象
// 云函数入口函数
exports.main = async (event, context) => {
let params = '{\"Text\":\"' + event.text + '\"}'
console.log(params)
await req.from_json_string(params);
await vector().then((v) => data = v);
return data
}
参考:
JS执行——Promise
(完)