簡體   English   中英

如何在另一個函數中使用nodjes許諾值

[英]How do I use a nodjes promise value in another function

我在nodejs中有兩個功能。 一個看起來像這樣

function checkAdd (
  address /* : string | void */
) /* :Promise<Object[]> */ {

  var convertToLowerCase = address.toLowerCase()

    return Promise.resolve()

    .then(() => {
      var allMatch = addressesAsJson.filter((record) => record.address === convertToLowerCase)

 });

}

還有另一個這樣的功能

function saveNewAd(
  address /* :?string | void */, cb
) /* :Promise<string> */ {

  return new Promise((resolve, reject)=> {


    var checkAddress = checkAddressAvailable(address)

    var addressAvailableResult = checkAddressAvailable(address)

    var seperatedAddress = address.split(',') 
    var firstAddLine  = capitalFirstLetter(seperatedAddress[0])
    var secondAddLine = seperatedAddress[1].toUpperCase()
    var thirdAddLine =  seperatedAddress[2].toUpperCase()

    var displayAddress = firstAddLine + ',' + secondAddLine + ',' + thirdAddLine

    addressesAsJson.push({"address": address , "display" : displayAddress})    
    fs.writeFile(jsonListPath, JSON.stringify(addressesAsJson), (err) => {
      if (err) reject(err)
      resolve("New address is saved")

    })


  });
}

在saveNewAd內部,我要檢查allMatch長度,如果長度大於0,則需要執行saveNewAd的函數體。 但這不起作用。 這就是我嘗試過的。 請幫我解決這個問題

function saveNewAd(
  address /* :?string | void */, cb
) /* :Promise<string> */ {

  return new Promise((resolve, reject)=> {

    var results = checkAdd(address)

    if(results.length>0){

   /*same function body as above method*/

    })
    }else{
    console.log("Error")
    }

  });
}

您必須利用鏈接,即首先異步找到allMatch ,然后將此值向下傳遞給saveNewAd .then()並作為參數傳遞給saveNewAd函數。 請注意, .then()函數實際上返回的是新的Promise,與原始的有所不同。

function checkAdd (
  address /* : string | void */
) /* :Promise<Object[]> */ {

  return new Promise((resolve, reject)=> {
    var convertToLowerCase = address.toLowerCase();

    var allMatch = addressesAsJson.filter((record) => record.address);

    resolve(allMatch);
  }
}

checkAdd()
.then((allMatch) => {
   saveNewAd(address, cb, allMatch); // now you can use allMatch as an argument in this function
}
===

MDN文檔: 使用Promises

暫無
暫無

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

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