第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為承諾寫循環(huán)的正確方法。

為承諾寫循環(huán)的正確方法。

揚(yáng)帆大魚 2019-07-13 09:21:18
為承諾寫循環(huán)的正確方法。如何正確構(gòu)造循環(huán)以確保以下內(nèi)容承諾電話和鎖鏈logger.log(RES)在迭代過程中同步運(yùn)行?(藍(lán)鳥)db.getUser(email).then(function(res) { logger.log(res); }); // this is a promise我嘗試了以下方法http:/blog.victorQun.com/javascript-諾言-時(shí)間-循環(huán) )var Promise = require('bluebird');var promiseWhile = function(condition, action) {     var resolver = Promise.defer();     var loop = function() {         if (!condition()) return resolver.resolve();         return Promise.cast(action())             .then(loop)             .catch(resolver.reject);     };     process.nextTick(loop);     return resolver.promise;});var count = 0;promiseWhile(function() {     return count < 10;}, function() {     return new Promise(function(resolve, reject) {         db.getUser(email)           .then(function(res) {                logger.log(res);                count++;               resolve();           });     }); }).then(function() {     console.log('all done');});雖然它看起來很管用,但我不認(rèn)為它能保證呼叫的順序logger.log(RES);有什么建議嗎?
查看完整描述

3 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

我認(rèn)為它不能保證調(diào)用logger.log(Res)的順序;

事實(shí)上確實(shí)如此。語句在resolve打電話。

有什么建議嗎?

很多。最重要的是使用創(chuàng)建-承諾-手動(dòng)反模式-只做

promiseWhile(…, function() {
    return db.getUser(email)
             .then(function(res) { 
                 logger.log(res); 
                 count++;
             });})…

第二,while功能可以簡化很多:

var promiseWhile = Promise.method(function(condition, action) {
    if (!condition()) return;
    return action().then(promiseWhile.bind(null, condition, action));});

第三,我不會(huì)用while循環(huán)(帶有閉包變量),但是for循環(huán):

var promiseFor = Promise.method(function(condition, action, value) {
    if (!condition(value)) return value;
    return action(value).then(promiseFor.bind(null, condition, action));});promiseFor(function(count) {
    return count < 10;}, function(count) {
    return db.getUser(email)
             .then(function(res) { 
                 logger.log(res); 
                 return ++count;
             });}, 0).then(console.log.bind(console, 'all done'));


查看完整回答
反對(duì) 回復(fù) 2019-07-13
?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

下面是我對(duì)標(biāo)準(zhǔn)承諾對(duì)象的處理方法。

// Given async function sayHifunction sayHi() {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log('Hi');
      resolve();
    }, 3000);
  });}// And an array of async functions to loop throughconst asyncArray = [sayHi, sayHi, sayHi];
  // We create the start of a promise chainlet chain = Promise.resolve();
  // And append each function in the array to the promise chainfor (const func of asyncArray) {
  chain = chain.then(func);}// Output:// Hi// Hi (After 3 seconds)// Hi (After 3 more seconds)


查看完整回答
反對(duì) 回復(fù) 2019-07-13
  • 3 回答
  • 0 關(guān)注
  • 535 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)