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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript回調(diào)函數(shù)同步

javascript回調(diào)函數(shù)同步

慕后森 2023-12-14 15:48:48
我目前正在研究 Alexa Skill,以從 SAP 系統(tǒng)收集數(shù)據(jù)。由于我的函數(shù)中有一個用于收集數(shù)據(jù)的回調(diào),因此 Alexa 在 talkOutput 變量更新之前會說話。const LagerhueteIntent = {    canHandle(handlerInput) {        return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest' &&            Alexa.getIntentName(handlerInput.requestEnvelope) === 'LagerhueteIntent';    },    handle(handlerInput) {        let speakOutput;        console.log("test");        findWarehouseKeepers(function(warehouseKeeper) {            console.log(warehouseKeeper);            speakOutput = "Die Lagerhüter sind die Produkte mit den Ids" + warehouseKeeper;            console.log(speakOutput);        });        return handlerInput.responseBuilder            .speak(speakOutput)            //.reprompt('add a reprompt if you want to keep the session open for the user to respond')            .getResponse();    }};用我的功能:function findWarehouseKeepers(callback) {    var args = getArgs();    console.log(args);    var Client = require('node-rest-client').Client;    var client = new Client();    client.get("http://XXXXXXXX$format=json", args, function(data, response) {        let validValuesList = new List([]);        data.d.results.forEach(function(data) {            validValuesList.add(data.ProductId);        });        console.log(validValuesList);        let validValuesAsArray = validValuesList.toArray();        console.log(validValuesAsArray);        callback(validValuesAsArray);    });}如何使我的函數(shù)同步,以便在執(zhí)行下一個代碼之前更新 talkOutput 變量?提前致謝。
查看完整描述

1 回答

?
HUWWW

TA貢獻1874條經(jīng)驗 獲得超12個贊

根據(jù)文檔,handle可以返回一個承諾,這將允許您在收到數(shù)據(jù)后構建響應。

理想情況下,您會進行更改findWarehouseKeepers以返回承諾,但這里是一個對代碼進行最小更改的示例:

handle(handlerInput) {

? return new Promise(resolve => {

? ? findWarehouseKeepers(warehouseKeeper => {

? ? ? const speakOutput = "Die Lagerhüter sind die Produkte mit den Ids" + warehouseKeeper;

? ? ? resolve(

? ? ? ? handlerInput.responseBuilder

? ? ? ? ? .speak(speakOutput)

? ? ? ? ? .getResponse()

? ? ? );

? ? });

? });

}

當然,您還需要考慮如果請求失敗該怎么辦,即您想拒絕承諾。


如果您更改findWarehouseKeepers為返回承諾,那么您可能可以將聲明編寫handle為(我不知道該代碼在哪個環(huán)境中運行)并以看起來async同步的方式編寫代碼:


async handle(handlerInput) {

? const warehouseKeeper = await findWarehouseKeepers();

? return handlerInput.responseBuilder

? ? .speak("Die Lagerhüter sind die Produkte mit den Ids" + warehouseKeeper)

? ? .getResponse()

}


查看完整回答
反對 回復 2023-12-14
  • 1 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號