簡體   English   中英

從函數返回變量和承諾

[英]Return variable and a promise from a function

考慮以下使用回調編寫的函數。 它返回一個令牌並異步執行一個方法。

var token = 1;
function requestSupport(callback) {
  setTimeout(() => {
    console.log(token + ":How may I help you?");
    callback(); //when executive is available
  }, 5000);
  return ++token; //instantly give the token number
}

回調的簡便之處在於該函數能夠(立即)返回令牌號,並且還可以異步執行代碼並在有幫助時發出通知。 嘗試使用Promises重寫時,此函數應該是什么樣? 問題:如果一個函數返回一個Promise,則用戶將不會獲得令牌號,因為一個函數可以返回一件事。

您想同時返回令牌和Promise-您可以使用所需的任何數據結構(可能是一個對象)進行此操作:

 var token = 1; function requestSupportProm() { const prom = new Promise((resolve) => { setTimeout(() => { console.log(token + ":How may I help you?"); resolve(); //when executive is available }, 2000); }); return { prom, token: ++token }; } (() => { // later; const { prom, token } = requestSupportProm(); console.log('Got token:', token); prom.then(() => { console.log('Promise resolved'); }); })(); 

也可以使用數組,例如return [prom, ++token] ,但是帶有命名屬性的對象一目了然可能更容易理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM