您可以基于 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
表格中检查它,如下图所示: