-1
我在嘗試構建一個node.js SDK來與我無法控制的API接口。我使用節點http模塊發送請求和ES6承諾,這些承諾將在這些請求完成並已用數據響應時解決。當承諾解決時通知
import Request from './Request'
class Interface {
constructor(endpoint = 'localhost', port = 5015, async = false) {
this.endpoint = endpoint;
this.port = port;
this.sessionCookie = null;
this.queue = [];
}
sessionStart(analystId, password) {
let response = this.request('session', 'analystLogon', {
userId: analystId,
password: password
}).then;
response((res) => { //Resolve the promise
this.sessionCookie = res;
})
.catch((err) => console.error(err));
}
request(service, method, params = {}) {
let request = new Request(service, method, params);
//place this request in the queue
request = request.sendRequest(this.endpoint, this.port, this.sessionCookie); //Returns a promise
return request
}
}
export
default Interface
我想避免是具有使用功能。那麼最終用戶。我希望這一切都是透明的。我的想法是將每個請求放入隊列中,並在解決問題後對其執行操作。我需要某種方式通知他們已經解決,但我不知道該怎麼做。
「*我想避免的是最終用戶不得不使用.then函數*」 - 這是不可能的。你正在返回一個承諾,並且調用者必須使用'then'。這就是它的工作原理,這就是它的原理。在做異步事情時你不能真正避免它 – Bergi
你的'sessionStart'方法很奇怪。您不能將'then'方法分配給'response'並在稍後沒有上下文的情況下調用它。 – Bergi
呵呵,我真的希望有某種方式可以將每個承諾放入數組中,並在解決時得到通知,並讓程序解決隊列中的下一個承諾。但如果不是這樣的話。 – richbai90