簡體   English   中英

我如何轉換這個箭頭函數?

[英]How do I convert this Arrow Function?

我無法弄清楚如何將此箭頭函數轉換為 IE 兼容函數。 如果有人可以為此提供解決方案,我真的很感激:

const store = window.WebChat.createStore({}, ({ dispatch }) => next => async action => {
                        if (action.type === 'DIRECT_LINE/POST_ACTIVITY') {
                            // Mocking data to be sent
                            const userId = 'xyz789';
                            const payloadUserContext = action.payload;

                            action = window.simpleUpdateIn(
                                action,
                                ['payload', 'activity', 'channelData'],
                                () => ({
                                    'personId': userId,
                                    'domain': $.urlParam('d'),
                                    'environment': window.location.host,
                                    'userContext': payloadUserContext
                                })
                            )
                        }
                        return next(action);
                    });

只需使用https://babeljs.io/

var store = window.WebChat.createStore({}, function (_ref) {
      var dispatch = _ref.dispatch;
      return function (next) {
        return async function (action) {
          if (action.type === 'DIRECT_LINE/POST_ACTIVITY') {
            // Mocking data to be sent
            var userId = 'xyz789';
            var payloadUserContext = action.payload;
            action = window.simpleUpdateIn(action, ['payload', 'activity', 'channelData'], function () {
              return {
                'personId': userId,
                'domain': $.urlParam('d'),
                'environment': window.location.host,
                'userContext': payloadUserContext
              };
            });
          }

          return next(action);
        };
      };
    });

您可以使用這個在線 babel 轉譯器https://babeljs.io/repl (轉譯器用於將代碼從一個版本轉換為另一個版本,在這種情況下我們希望從 es6 轉到 es5)。

您可以在此處查看 ES 瀏覽器支持https://www.w3schools.com/js/js_versions.asp


編輯:

我在網上閑逛,我發現 babel 產生了一個你可能不想使用的結果(至少對於用 async/await 定義的函數)。

你可以做的是用 babel 進行轉譯,而 async/await 剩下的任何東西,把它改成 .then 和 .catch。

例如,

 const someAsyncRequest = () => new Promise((resolve) => { setTimeout(() => { resolve("Responding") }, 1000) }) const myAsyncFunction = async () => { console.log("Making request") const result = await someAsyncRequest() console.log(result) console.log("Done!") } function myIE9AsyncFunction() { console.log("Making request") someAsyncRequest() .then(function (result) { console.log(result) console.log("Done!") }) .catch(function (error) { console.log("What the... ", error) }) } myAsyncFunction() myIE9AsyncFunction()

暫無
暫無

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

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