您可以基于 qbo3 API 调用构造一个 Promise,如下所示:
qbo3.getPromise = function(cn, method, data) {
return new Promise(function(resolve, reject) {
new (qbo3[cn] || qbo3[cn + 'Object'])().invokeJson(method, data, { success: resolve, error: reject });
})
}
在哪里:
cn: 是 API 端点的类名(例如Process, Loan, Person, Message, 等)
method: 是要调用的类方法(例如Select, Search, Update, 等)
data: 是JSON要提交的数据
(qbo3[cn] || qbo3[cn + 'Object'])表达式只是一点糖,允许您将或Process作为ProcessObject参数cn传递给qbo3.getPromise(...).
然后你可以使用:
var data = {...}
var myPromise = qbo3.getPromise('Process', 'StartRecordingTime', data)
.then(return qbo3.getPromise('Process', 'RealWorldApiCall', data))
.then(return qbo3.getPromise('Process', 'EndRecordingTime', {}))
更通用的用法是利用一个 API 的结果将数据传递给后续调用:
var somePromise = qbo3.getPromise('Person', 'Search', {"Person": "someuser@acme.com"})
.then(json => {
const id = json.PersonCollection.PersonItem[0].PersonID;
return qbo3.getPromise('ProcessObject', 'Search', { "CreatedPersonID": id })
}).then(processes => console.log(processes));
请注意,如果您只是对响应时间进行故障排除,请在所有 API 调用中qbo3包含响应标头。X-Execution-Time此标头不会传递给resolve方法,您可以从 Chrome 的开发人员控制台的Network表格中检查它,如下图所示:
